Maison > développement back-end > C++ > le corps du texte

Explication détaillée de l'héritage des fonctions C++ : Comment définir et utiliser des classes de base abstraites ?

WBOY
Libérer: 2024-05-03 13:21:02
original
1037 Les gens l'ont consulté

L'héritage de fonctions permet aux classes dérivées de réutiliser les définitions de fonctions de la classe de base, ce qui se fait via les étapes suivantes : Définir une classe de base abstraite, comprenant des fonctions virtuelles pures. Utilisez le mot-clé override dans la classe dérivée pour hériter et implémenter les fonctions de la classe de base. Cas pratique : Créez une classe de base abstraite Shape et dérivez les classes Circle et Rectangle pour calculer les aires de différentes formes.

C++ 函数继承详解:如何定义和使用抽象基类?

Explication détaillée de l'héritage de fonctions C++ : définition et utilisation de classes de base abstraites

Qu'est-ce que l'héritage de fonctions ?

L'héritage de fonctions est une fonctionnalité C++ qui permet aux classes dérivées d'hériter des définitions de fonctions d'une classe de base, réutilisant ainsi les fonctions de la classe de base dans les sous-classes.

Définir une classe de base abstraite

Une classe de base abstraite est une classe de base qui n'est pas destinée à être instanciée, elle sert uniquement de classe de base pour d'autres classes. Il contient des fonctions virtuelles pures (c'est-à-dire des fonctions sans corps de fonction) qui doivent être remplacées dans les classes dérivées. Pour déclarer une classe de base abstraite, vous pouvez utiliser virtuel et = 0, par exemple : virtual= 0,例如:

class Shape {
public:
    virtual double area() const = 0;
};
Copier après la connexion

派生类中的函数继承

派生类可以继承抽象基类的函数定义,方法是使用 override

class Circle : public Shape {
public:
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};
Copier après la connexion

Héritage de fonctions dans les classes dérivées

Les classes dérivées peuvent hériter de la base abstraite définition de la fonction des classes en utilisant le mot-clé override et en fournissant une implémentation de la fonction. Par exemple :

#include <iostream>
#include <cmath>

using namespace std;

class Shape {
public:
    virtual double area() const = 0;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius(radius) {}
    override double area() const {
        return M_PI * radius * radius;
    }
private:
    double radius;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width(width), height(height) {}
    override double area() const {
        return width * height;
    }
private:
    double width;
    double height;
};

int main() {
    Circle circle(5);
    cout << "Circle area: " << circle.area() << endl;

    Rectangle rectangle(3, 4);
    cout << "Rectangle area: " << rectangle.area() << endl;

    return 0;
}
Copier après la connexion

Cas pratique : Calcul de l'aire de forme

Prenons le calcul de l'aire de forme comme exemple pour une démonstration pratique. Nous créons une classe de base abstraite Shape et créons des classes dérivées Circle et Rectangle pour calculer l'aire des cercles et des rectangles : 🎜
Circle area: 78.5398
Rectangle area: 12
Copier après la connexion
🎜🎜Exécuter la sortie : 🎜🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!