Étude recommandée : "Tutoriel c++"
- Le comportement de la méthode doit dépendre de l'appel l’objet méthode. Ce comportement plus complexe est appelé polymorphisme - ayant plusieurs formes, c'est-à-dire que la même méthode se comporte différemment selon le contexte.
Virtual implémente l'objet pour appeler la méthode ou la séquence de méthodes correcte.
Deux mécanismes pour réaliser le polymorphisme :
Si vous utilisez le mot-clé virtual lors de la déclaration d'une fonction, ces méthodes sont appelées méthodes virtuelles.
<span style="color: #0000ff;">class</span><span style="color: #000000;"> Brass {<br/>private: ...<br/>public:<br/> ...<br/> virtual void ViewAcct() const;<br/> virtual ~Brass(){} }</span>
BrassPlus :
La classe de base déclare une fonction virtuelle pour garantir que lorsque l'objet dérivé est libéré, le destructeur est appelé dans le bon ordre (voir le rôle des fonctions virtuelles plus tard) .
Brass dom("Dominic Banker", 11224, 4183.45); BrassPlus dot("Dorothy Banker", 12118, 2592.00); dom.ViewAcct(); // use Brass::ViewAcct()dot.ViewAcct(); // use BrassPlus::ViewAcct()
Les deux prototypes ViewAcct() indiquent qu'il y aura 2 définitions de méthodes indépendantes. La version de la classe de base porte le nom qualifié Brass::ViewAcct() et la version de la classe dérivée porte le nom qualifié BrassPlus::ViewAcct().
Appeler une méthode par référence ou pointeur au lieu d'un objet :
Si le mot clé virtual n'est pas utilisé, le programme choisira en fonction du type de référence ou type de pointeur Méthode :
// behavior with non-virtual ViewAcct()// method chosen according to reference typeBrass &b1_ref = dom; Bross &b2_ref = dot; b1_ref.ViewAcct(); // use Brass::ViewAcct()b2_ref.ViewAcct(); // use Brass::ViewAcct()
Si vous souhaitez redéfinir une méthode de classe de base dans une classe dérivée, vous devez généralement déclarer la méthode de classe de base comme virtuelle. De cette façon, le programme choisira la version de la méthode en fonction du type d'objet plutôt que du type de référence ou de pointeur. Il est également courant de déclarer un destructeur virtuel pour une classe de base. L'utilisation d'un destructeur virtuel garantit que la séquence correcte de destructeurs est appelée (c'est-à-dire de l'objet de classe dérivé à l'objet de classe de base appelant une fois leurs destructeurs).
Appel des méthodes de classe de base : Dans les méthodes de classe dérivée, la technique standard consiste à utiliser l'opérateur de résolution de portée pour appeler les méthodes de classe de base :
<span class="cnblogs_code">Brass::ViewAcct(); <span style="color: #008000;">//<code><span class="cnblogs_code">Brass::ViewAcct(); <span style="color: #008000;">//</span><span style="color: #008000;"> display base portion</span></span>
afficher la partie de base
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!