Une fonction virtuelle est une fonction membre qui est définie dans la classe de base / la 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 à l'aide de la référence ou du 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: classe de base et classe dérivée.
La classe de base a une fonction de membre, je.e., afficher(). La classe dérivée est héritée de la classe de base et redéfinie la fonction affichage ().
Ensuite, nous avons déclaré un pointeur vers le type de classe de base et attribué un objet de la classe dérivée. Ainsi, lorsque nous appelons la fonction affichage () à l'aide du 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 virtuel. Nous verrons un autre exemple pour comprendre cela.
#inclure
Utilisation de Namespace Std;
classe Base_class
public:
vide affiche ()
couter << "I am in Base class" << endl;
;
Class Derive_class: Public Base_class
public:
vide affiche ()
couter << "I am in Derived class"retour 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, il imprime «Je suis en classe dérivée», ce qui indique que la fonction de classe dérivée est appelée.
Le mot-clé virtuel (fonction virtuelle) dans la classe de base est responsable pour s'assurer que la bonne fonction est appelée pour un objet.
#inclure
Utilisation de Namespace Std;
classe Base_class
public:
affichage vide virtuel ()
couter << "I am in Base class" << endl;
;
Class Derive_class: Public Base_class
public:
vide affiche ()
couter << "I am in Derived class"retour 0;
Exemple 3
Ceci est un autre exemple d'une fonction virtuelle. Comme vous pouvez le voir dans le programme ci-dessous, nous avons défini une classe de base, je.e., Animal. Il y a deux classes dérivées: chien et vache. Nous avons défini la fonction EAT () comme virtuelle dans la classe de base, je.e., Animal. Nous avons ensuite redéfini la fonction EAT () dans les classes dérivées, le chien et la vache. Dans la fonction Main (), nous avons un pointeur de la classe de base, je.e., Animal, puis attaché la classe dérivée, chien. Ainsi, lorsque nous appelons la fonction EAT () en utilisant le 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 de chiens. De même, lorsque nous attachons l'objet de classe de vache, nous pouvons alors invoquer la version de classe dérivée de la fonction EAT (), je.e., La fonction EAT () de la classe de vache. Vous pouvez clairement voir ce comportement dans la sortie ci-dessous.
#inclure
Utilisation de Namespace Std;
animal de classe
public:
void virtuel Eat ()
couter << "Animal - base class - undefined eating behavior." << endl;
;
chien de classe: animal public
public:
void Eat ()
couter << "Dog - eat non-veg!" << endl;
;
Vache de classe: animal public
public:
void Eat ()
couter << "Cow - eat veg!"a_ptr = new Cow ();
a_ptr-> manger ();
retour 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 - le polymorphisme statique et le polymorphisme dynamique. À l'aide d'une fonction virtuelle, nous pouvons réaliser le polymorphisme d'exécution / 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.