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

Explication détaillée de l'héritage des fonctions C++ : quelle est l'essence du polymorphisme ?

WBOY
Libérer: 2024-05-04 21:30:02
original
1044 Les gens l'ont consulté

Présentation de l'héritage de fonctions : l'héritage de fonctions en C++ est implémenté via le mot-clé override, permettant aux sous-classes de remplacer les fonctions de la classe parent, rendant ainsi possible le polymorphisme, c'est-à-dire que les objets affichent des comportements différents au moment de l'exécution, même s'ils appartiennent à la même classe parent.

C++ 函数继承详解:多态的本质是什么?

Explication détaillée de l'héritage de fonctions C++ : l'essence du polymorphisme

Dans la programmation orientée objet, l'héritage est un mécanisme important, qui permet aux sous-classes d'hériter des données membres et des fonctions membres des classes parentes. L'héritage de fonction fait référence à l'héritage des fonctions membres de la classe parent à la classe enfant.

Introduction au polymorphisme

Le polymorphisme est un concept clé de la programmation orientée objet qui permet aux objets de se comporter différemment au moment de l'exécution, même s'ils appartiennent à la même classe parent. L'héritage de fonctions est un moyen d'atteindre le polymorphisme.

Héritage de fonctions

En C++, l'héritage de fonctions est implémenté via le mot-cléoverride. Lorsqu'une sous-classe définit une fonction avec le même nom et la même signature que la classe parent, la fonction est marquéeoverride. Cela indique au compilateur que la sous-classe remplace les fonctions de la classe parent.override关键字实现。当子类定义了一个与父类同名且具有相同签名的函数时,该函数被标记为override。这会告诉编译器,子类正在覆盖父类的函数。

class Base { public: virtual void print() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: virtual void print() override { std::cout << "Derived class" << std::endl; } };
Copier après la connexion

在此示例中,Base类定义了一个print()函数,而Derived类通过override关键字覆盖了该函数。因此,当调用Derived类对象的print()函数时,它将打印 "Derived class",而不是 "Base class"。

虚函数

override函数必须是虚函数。虚函数通过virtual关键字声明,它允许子类覆盖父类的函数。在上面的示例中,print()函数是虚函数。

实战案例

下面是一个演示函数继承和多态的代码案例:

#include  class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: double width, height; Rectangle(double w, double h) : width(w), height(h) {} double getArea() override { return width * height; } }; class Circle : public Shape { public: double radius; Circle(double r) : radius(r) {} double getArea() override { return 3.14 * radius * radius; } }; int main() { Shape* shapes[] = {new Rectangle(2, 3), new Circle(4)}; for (int i = 0; i < 2; i++) { std::cout << "Area of " << (i == 0 ? "Rectangle" : "Circle") << ": " << shapes[i]->getArea() << std::endl; } return 0; }
Copier après la connexion

在该案例中,Shape是形状类的基类,它定义了一个纯虚函数getArea()RectangleCircle类从Shape类继承,并覆盖了getArea()函数以计算各自的面积。

main()函数中,使用多态,一个基类数组被用于存储RectangleCircle对象。由于getArea()rrreee

Dans cet exemple, la classe Basedéfinit une fonction print(), et la classe Derivedpasse overrideLe mot-clé remplace cette fonction. Par conséquent, lorsque la fonction print()d'un objet de classe Derivedest appelée, elle affichera "Classe dérivée" au lieu de "Classe de base".

Fonction virtuelle overrideLa fonction doit être une fonction virtuelle. Les fonctions virtuelles sont déclarées avec le mot-clé virtual, qui permet aux sous-classes de remplacer les fonctions de la classe parent. Dans l'exemple ci-dessus, la fonction print()est virtuelle. Cas pratiqueCe qui suit est un exemple de code qui démontre l'héritage et le polymorphisme des fonctions : rrreeeDans ce cas, Shapeest la classe de base de la classe shape, qui définit une fonction virtuelle puregetArea(). Les classes Rectangleet Circlehéritent de la classe Shapeet remplacent la fonction getArea()pour calculer leurs aires respectives. . Dans la fonction main(), en utilisant le polymorphisme, un tableau de classes de base est utilisé pour stocker les objets Rectangleet Circle. Puisque la fonction getArea()est remplacée, la zone correcte est imprimée en fonction du type d'objet. Avec l'héritage de fonctions et le polymorphisme, nous pouvons construire des programmes flexibles et extensibles avec différents comportements.

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