Maison > Article > développement back-end > Réécriture de fonctions C++ : découvrir les secrets de la couverture comportementale en héritage
La réécriture de fonctions se produit lorsqu'une classe dérivée définit une fonction du même nom et implémente une fonction différente. Les règles incluent : Utilisez le mot-clé override. Le nom, les paramètres et le type de retour sont les mêmes que ceux de la fonction de classe de base. Les droits d'accès ne doivent pas être inférieurs à ceux des fonctions de la classe de base. Grâce à la substitution, les classes dérivées peuvent remplacer le comportement de la classe de base, réaliser un polymorphisme et appeler dynamiquement des méthodes du même nom dans différentes classes dérivées.
En C++, la substitution de fonction est une fonctionnalité clé pour obtenir un comportement polymorphe par héritage. Le remplacement de fonction se produit lorsqu'une classe dérivée définit une fonction portant le même nom que sa classe de base mais avec une implémentation différente.
Afin de remplacer les fonctions de la classe de base, les classes dérivées doivent utiliser le mot-clé override
. Par exemple : override
关键字。例如:
class Base { public: virtual void print() { cout << "Base class print()" << endl; } }; class Derived : public Base { public: virtual void print() override { cout << "Derived class print()" << endl; } };
函数重写的规则如下:
override
关键字。考虑一个形状抽象类和它的两个派生类矩形和圆。
class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: double width, height; Rectangle(double w, double h) : width(w), height(h) {} override double getArea() { return width * height; } }; class Circle : public Shape { public: double radius; Circle(double r) : radius(r) {} override double getArea() { return M_PI * radius * radius; } }; int main() { Rectangle rect(5, 3); Circle circle(4); Shape* shapes[] = {&rect, &circle}; for (auto shape : shapes) { cout << "Shape area: " << shape->getArea() << endl; } }
在这个示例中,Shape
类定义了一个抽象方法 getArea()
,由派生类 Rectangle
和 Circle
重写以提供实际的面积计算。通过多态,我们可以使用 shapes
数组中的基类指针调用 getArea()
rrreee
override
. Shape
définit une méthode abstraite getArea()
, qui est utilisée par les classes dérivées Rectangle
et Cercle Remplacé pour fournir des calculs de surface réels. Avec le polymorphisme, nous pouvons calculer et afficher dynamiquement les aires de différentes formes en appelant la méthode <code>getArea()
en utilisant le pointeur de classe de base dans le tableau shapes
. 🎜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!