Maison > Article > développement back-end > Application pratique des fonctions virtuelles C++ : exemples de code et dépannage
Les fonctions virtuelles permettent de remplacer les fonctions de la classe de base dans les classes dérivées et d'appeler les fonctions appropriées en fonction du type d'objet au moment de l'exécution : Créer des fonctions virtuelles : utilisez le mot-clé virtual pour déclarer des fonctions dans la classe de base. Remplacer les fonctions virtuelles : utilisez le mot-clé override dans les classes dérivées pour remplacer les fonctions virtuelles de la classe de base. Appel réel : lorsqu'un objet de classe dérivé est pointé vers un pointeur ou une référence de classe de base, la version remplacée sera appelée. Fonction virtuelle découverte : si elle n'est pas remplacée, l'implémentation originale de la classe de base sera appelée. Appel avec pointeur ou référence : implémentez le polymorphisme, permettant à un pointeur ou une référence d'une classe de base de pointer vers un objet de classe dérivé, et appelez la fonction de substitution appropriée au moment de l'exécution.
Les fonctions virtuelles sont un mécanisme de polymorphisme en C++. Il permet aux fonctions de la classe de base d'être remplacées dans la classe dérivée, permettant ainsi à la fonction appropriée d'être appelée au moment de l'exécution en fonction du type réel de l'objet.
Pour créer une fonction virtuelle, vous devez déclarer la fonction dans la classe de base à l'aide du mot-clé virtuel
, comme indiqué ci-dessous : virtual
关键字声明该函数,如下所示:
class Base { public: virtual void print() { cout << "Base class" << endl; } };
在派生类中,可以使用 override
关键字覆盖基类中的虚拟函数,如下所示:
class Derived : public Base { public: override void print() { cout << "Derived class" << endl; } };
考虑以下一个简单的示例:
#include <iostream> using namespace std; class Animal { public: virtual void speak() { cout << "Animal speaks" << endl; } }; class Dog : public Animal { public: override void speak() { cout << "Dog barks" << endl; } }; int main() { Animal* a = new Dog(); a->speak(); // 输出:Dog barks return 0; }
在这个示例中,基类 Animal
定义了 speak()
虚拟函数,它在 Dog
派生类中被覆盖。当我们通过 Animal*
指针调用 speak()
rrreee
override
pour remplacer les fonctions virtuelles dans une classe de base comme suit : rrreeeUn exemple pratique
Considérez l'exemple simple suivant :rrreee
Dans cet exemple, le la classe de base Animal
définit la fonction virtuelle speak()
, qui est remplacée dans les classes dérivées de Dog
. Lorsque nous appelons la fonction speak()
via le pointeur Animal*
, la version remplacée est appelée, produisant "Le chien aboie". Résolution de questions
Q : Pourquoi avez-vous besoin d'utiliser des pointeurs ou des références pour appeler des fonctions virtuelles ?
🎜🎜Réponse : afin d'obtenir le polymorphisme, un pointeur ou une référence de la classe de base peut pointer vers un objet de la classe dérivée, permettant ainsi d'appeler la fonction de substitution appropriée au moment de l'exécution. 🎜🎜🎜Q : Que se passe-t-il si les fonctions virtuelles ne sont pas remplacées dans les classes dérivées ? 🎜🎜🎜Réponse : Dans ce cas, l'implémentation d'origine dans la classe de base sera appelée. 🎜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!