Maison  >  Article  >  développement back-end  >  Règles d'héritage pour les fonctions membres C++

Règles d'héritage pour les fonctions membres C++

WBOY
WBOYoriginal
2024-04-18 14:45:011207parcourir

Règles d'héritage des fonctions membres C++ : Héritage public : si une classe dérivée hérite publiquement des fonctions membres de la classe de base, alors les fonctions membres de la classe dérivée sont également publiques. Héritage protégé : si une classe dérivée protège et hérite des fonctions membres de la classe de base, alors les fonctions membres de la classe dérivée sont protégées. Héritage privé : la classe dérivée hérite de manière privée des fonctions membres de la classe de base. Les fonctions membres de la classe dérivée sont privées et ne sont pas directement accessibles par la classe dérivée elle-même.

C++ 成员函数的继承规则

Règles d'héritage pour les fonctions membres C++

Dans la programmation orientée objet C++, une classe peut hériter des données membres et des fonctions membres d'une classe de base par héritage. Pour l'héritage des fonctions membres, suivez les règles suivantes :

  • Héritage public : Si une classe dérivée hérite publiquement des fonctions membres de la classe de base, alors les fonctions membres de la classe dérivée sont également publiques.
  • Héritage protégé : La classe dérivée protège et hérite des fonctions membres de la classe de base, puis les fonctions membres de la classe dérivée sont protégées.
  • Héritage privé : Si une classe dérivée hérite de manière privée des fonctions membres de la classe de base, alors les fonctions membres de la classe dérivée sont privées et ne sont pas directement accessibles par la classe dérivée elle-même.

Exemple pratique :

Considérons l'exemple suivant :

class Shape {
public:
    virtual double getArea();  // 抽象函数
};

class Rectangle : public Shape {
public:
    Rectangle(double length, double width);
    double getArea() override;  // 重写父类的 getArea 函数
private:
    double length;
    double width;
};

class Square : protected Shape {
public:
    Square(double side);
    double getArea() override;
private:
    double side;
};

class Circle : private Shape {
public:
    Circle(double radius);
    double getArea() override;
private:
    double radius;
};

Dans cet exemple :

  • La classe Rectangle hérite publiquement de la classe Shape, donc La fonction getArea est également publique dans la classe Rectangle. Rectangle 类公有继承 Shape 类,因此 getArea 函数在 Rectangle 类中也是公有的。
  • Square 类保护继承 Shape 类,因此 getArea 函数在 Square 类中也是保护的。
  • Circle 类私有继承 Shape 类,因此 getArea 函数在 Circle
  • La classe Square protected hérite de la classe Shape, donc la fonction getArea est également protégée dans la classe Square .

La classe Circle hérite en privé de la classe Shape, donc la fonction getArea est privée dans la classe Circle.

    Remarque :
  • Les fonctions abstraites doivent être remplacées dans les classes dérivées.
  • Les fonctions membres d'une classe dérivée peuvent accéder aux données membres protégées et privées de la classe de base, mais ne peuvent appeler que les fonctions membres publiques et protégées de la classe de base.
🎜Les constructeurs et destructeurs de classes dérivées ne sont pas hérités de la classe de base. 🎜🎜

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