C++

Fonction virtuelle C++

Fonction virtuelle C++
Dans cet article, nous allons discuter de la fonction virtuelle dans le langage de programmation C++. Une fonction virtuelle est utilisée en C++ pour réaliser le polymorphisme runtime/dynamique. Nous verrons plusieurs exemples pour comprendre le concept de la fonction virtuelle en C++.

Une fonction virtuelle est une fonction membre qui est définie dans la classe de base/classe parent et redéfinie dans la classe dérivée. La fonction virtuelle permet d'appeler la version de classe dérivée de la fonction en utilisant la référence ou le pointeur vers la classe de base.

Voyons quelques exemples pour comprendre le concept de fonction virtuelle.

Dans le premier exemple, nous verrons le comportement de la fonction non virtuelle, puis dans le deuxième exemple, nous expliquerons le comportement d'une fonction virtuelle.

Exemple 1

Dans l'exemple de code suivant, nous avons deux classes : la classe de base et la classe dérivée.

La classe de base a une fonction membre, je.e., affichage(). La classe dérivée est héritée de la classe de base et redéfinie la fonction display().

Ensuite, nous avons déclaré un pointeur vers le type de classe de base et affecté un objet de la classe dérivée. Ainsi, lorsque nous appelons la fonction display() en utilisant le pointeur de type de classe de base, la fonction de classe de base sera appelée. Vous pouvez voir la sortie ci-dessous.

Mais, dans de tels cas, C++ fournit un moyen d'appeler la fonction de classe dérivée en déclarant la fonction de classe de base comme virtuelle. Nous verrons un autre exemple pour comprendre cela.

#inclure
en utilisant l'espace de noms std ;
classe Base_Class

Publique:
affichage vide()

cout << "I am in Base class" << endl;

 ;
classe Derived_Class:public Base_Class

Publique:
affichage vide()

cout << "I am in Derived class" renvoie 0 ;

Exemple 2

Dans cet exemple, nous avons défini la fonction display() comme une fonction virtuelle dans la classe de base. La seule différence par rapport au programme précédent est que nous avons ajouté un mot-clé virtuel devant « void display() » dans la classe de base.

Maintenant, si vous voyez la sortie, elle affiche "Je suis dans la classe dérivée", ce qui indique que la fonction de classe dérivée est appelée.

Le mot-clé virtual (virtual function) dans la classe de base est chargé de s'assurer que la bonne fonction est appelée pour un objet.

#inclure
en utilisant l'espace de noms std ;
classe Base_Class

Publique:
affichage du vide virtuel()

cout << "I am in Base class" << endl;

 ;
classe Derived_Class:public Base_Class

Publique:
affichage vide()

cout << "I am in Derived class" renvoie 0 ;

Exemple 3

Ceci est un autre exemple de fonction virtuelle. Comme vous pouvez le voir dans le programme ci-dessous, nous avons défini une classe de base, i.e., Animal. Il existe deux classes dérivées : Chien et Vache. Nous avons défini la fonction eat() comme virtuelle dans la classe de base, i.e., Animal. Nous avons ensuite redéfini la fonction eat() dans les deux classes dérivées, Dog et Cow.  Dans la fonction main(), nous avons un pointeur de la classe de base, i.e., Animal, puis attaché la classe dérivée, Dog. Ainsi, lorsque nous appelons la fonction eat() à l'aide du pointeur de classe de base, nous pouvons invoquer la version de classe dérivée de la fonction eat(), i.e., la fonction eat() de la classe Dog. De même, lorsque nous attachons l'objet de classe Cow, nous pouvons alors invoquer la version de classe dérivée de la fonction eat(), i.e., la fonction eat() de la classe Cow. Vous pouvez clairement voir ce comportement dans la sortie ci-dessous. 

#inclure
en utilisant l'espace de noms std ;
classe Animal

Publique:
vide virtuel manger ()

cout << "Animal - base class - undefined eating behavior." << endl;

 ;
Classe Chien: Animal public

Publique:
vide manger ()

cout << "Dog - eat non-veg!" << endl;

 ;
classe Vache: Animal public

Publique:
vide manger ()

cout << "Cow - eat veg!" a_ptr = nouvelle vache();
a_ptr-> manger();
renvoie 0 ;

Conclusion

Dans cet article, j'ai expliqué le concept de fonction virtuelle en C++. Le C++ prend en charge différents types de polymorphisme - polymorphisme statique et polymorphisme dynamique. A l'aide d'une fonction virtuelle, nous pouvons réaliser le polymorphisme runtime/dynamique. Dans cet article, nous n'avons examiné que le concept de fonction virtuelle et comment réaliser le polymorphisme d'exécution. J'ai expliqué trois exemples de travail pour expliquer la fonction virtuelle.

Émulez les clics de souris en survolant à l'aide de la souris sans clic dans Windows 10
L'utilisation d'une souris ou d'un clavier dans la mauvaise posture d'une utilisation excessive peut entraîner de nombreux problèmes de santé, notamme...
Ajoutez des gestes de souris à Windows 10 à l'aide de ces outils gratuits
Ces dernières années, les ordinateurs et les systèmes d'exploitation ont considérablement évolué. Il fut un temps où les utilisateurs devaient utilise...
Contrôlez et gérez le mouvement de la souris entre plusieurs moniteurs dans Windows 10
Gestionnaire de souris à double affichage vous permet de contrôler et de configurer le mouvement de la souris entre plusieurs moniteurs, en ralentissa...