Maison >développement back-end >C++ >Explication détaillée de l'héritage des fonctions C++ : Comment définir et utiliser des classes de base abstraites ?

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

WBOY
WBOYoriginal
2024-05-03 13:21:021066parcourir

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;
};

派生类中的函数继承

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

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

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;
}

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
🎜🎜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!

Déclaration:
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