Qu'est-ce qu'une classe virtuelle?
Une classe virtuelle est une classe qui n'est allouée qu'une seule fois en 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 sont utilisés pour impliquer qu'une classe particulière doit être considérée comme virtuelle.
Une classe de programmation orientée objet ne peut pas être dérivée de plusieurs classes parentales multiples 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 pairDonnées et fonctions ent. Les autres langues qui prennent en charge plusieurs héritage comprennent Perl, Python, Tcl et Eiffel.
Un problème se produit dans plusieurs hiérarchies d'héritage lorsque deux classes de parents ou plus utilisées pour créer une classe d'enfants sont initialement dérivées d'une seule ou même classe de grands-parents. 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 verrureclasse UAL 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.
devrait être pris en charge lors de la structuration des hiérarchies de classe, en particulier lorsqu'elles seront incluses ou deviendront la base pour des hiérarchies beaucoup plus importantes à 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.