Skip to main content

Qu'est-ce qu'une classe virtuelle?

Une classe virtuelle est une classe qui n'est allouée qu'une seule fois dans la mémoire, de sorte que les enfants de cette classe n'utilisent que la seule copie de cette classe parent qui est établie en mémoire.Une classe est un groupe d'objets qui partagent des traits ou des attributs communs.La création d'une classe virtuelle donne des langages de programmation orientés objet la capacité d'utiliser un héritage multiple lorsque les classes de parents de la deuxième ou plus sont dérivées de classes de base ancestrales communes.Selon le langage de programmation informatique référencé, le mot-clé virtuel, le mot-clé similaire, ou la syntaxe et la sémantique d'une classe ne sont utilisés pour impliquer qu'une classe particulière doit être considérée comme virtuelle.c'est quand une classe d'enfants peut être dérivée de plusieurs classes de parents en même temps.Dans un langage de programmation comme C ++, une classe peut hériter de toutes les données des membres et des fonctions membres des deux classes parentales à la fois et avoir accès aux deux ensembles de données et de fonctions parents.Les autres langues qui prennent en charge l'héritage multiple incluent Perl, Python, Tcl et Eiffel.

Un problème se produit dans de multiples hiérarchies d'héritage lorsque deux classes de parents ou plus utilisées pour créer une classe d'enfants sont à l'origine dérivées d'une seule classe ou d'une même classe grand-parent.C'est ce qu'on appelle le problème du diamant, le nom résultant de l'apparence de la hiérarchie dans cette situation.Lorsqu'un programme de compilateur essaie d'instancier une classe, comme une classe de petits-enfants fabriquée à partir de deux classes de parents avec un grand-parent commun, deux copies du grand-parent sont fabriquées en mémoire, une pour chaque parent.

En raison de l'ambiguïté causée par plusieurs copies du même grand-parent en mémoire, le compilateur n'est pas en mesure de déterminer quelle copie du grand-parent que le petit-enfant devrait utiliser pour accéder aux données ou fonctions des grands-parents.Pour remédier à cette situation, en C ++, le grand-parent est transformé en classe virtuelle lors de la déclaration des parents.Cela fait que le compilateur ne fait qu'une copie du grand-parent en mémoire que les deux parents partagent.Une fois que le grand-parent est devenu une classe virtuelle, le compilateur n'a aucun problème à décider comment le petit-enfant devrait accéder au grand-parent car il n'y a qu'une seule copie du grand-parent.

Un grand soin devrait être pris en matière de structuration des hiérarchies de classe, surtout lorsqu'elle sera inclusedans ou devenir la base de hiérarchies beaucoup plus grandes à l'avenir.L'utilisation appropriée d'une classe virtuelle donne aux hiérarchies de classe une plus grande latitude dans le développement;Cependant, ils ont le potentiel de provoquer des erreurs difficiles à localiser.L'étude des principes solides de l'ingénierie des programmes informatiques aidera à garantir que les effets secondaires inattendus de l'organisation de programme incorrecte ne se produisent pas.