Maison > Article > développement back-end > Le guide complet des fonctions virtuelles C++ : du concept à la mise en œuvre
Les fonctions virtuelles sont un mécanisme clé en POO, permettant aux classes dérivées de remplacer les fonctions de la classe de base et d'obtenir une liaison dynamique, apportant les avantages de l'évolutivité, du polymorphisme et de la réutilisation du code : Concept : les fonctions virtuelles sont déclarées dans la classe de base et marquées comme dérivées virtuelles ; les classes peuvent remplacer les fonctions virtuelles et fournir leurs propres implémentations. Liaison dynamique : C++ utilise la liaison dynamique pour déterminer au moment de l'exécution quelle implémentation de fonction virtuelle appeler. Avantages : les fonctions virtuelles améliorent l'extensibilité, le polymorphisme et la réutilisation du code, vous permettant de créer facilement des classes dérivées et d'effectuer des comportements spécifiques sur différentes instances de classe.
Guide complet des fonctions virtuelles en C++ : du concept à la mise en œuvre
Introduction
Les fonctions virtuelles sont un mécanisme orienté objet (POO) de base qui permet aux classes dérivées d'hériter et de remplacer les fonctions d'une base. classe . Cela vous permet de créer du code flexible et extensible qui présente différents comportements pour différentes instances de classe.
Concept
Les fonctions virtuelles en les déclarant dans la classe de base et en les marquant avec le virtual
mot-clé :
class Base { public: virtual void print() { cout << "Base::print()" << endl; } };
Les classes dérivées peuvent remplacer les fonctions virtuelles, fournissant leur propre implémentation :
class Derived : public Base { public: virtual void print() override { cout << "Derived::print()" << endl; } };
Liaison dynamique
Utilisations C++ un mécanisme de liaison dynamique pour déterminer l'implémentation de la fonction virtuelle à appeler au moment de l'exécution. Lorsque vous appelez une fonction virtuelle, le compilateur insère un appel indirect qui résout l'implémentation correcte de la fonction au moment de l'exécution.
Avantages
L'utilisation de fonctions virtuelles présente certains avantages :
Cas pratique
Créer une classe de forme abstraite Shape et définir une fonction virtuelle print() :
class Shape { public: virtual void print() = 0; };
Créer une classe rectangle Rectangle, hériter de Shape et remplacer print() :
class Rectangle : public Shape { public: void print() override { cout << "Rectangle" << endl; } };
Créer une classe Shape en cercle Circle, hérite de Shape et remplace print() :
class Circle : public Shape { public: void print() override { cout << "Circle" << endl; } };
Dans la fonction main(), vous pouvez créer un tableau d'objets Shape et utiliser sa méthode print() :
int main() { Shape* shapes[] = { new Rectangle(), new Circle() }; for (Shape* shape : shapes) { shape->print(); } return 0; }
Cela affichera :
Rectangle Circle
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!