C + + est un langage le plus connu de l'ordinateur pour utiliser l'héritage virtuel. Pour déclarer l'héritage virtuel en C + +, le "virtuel" mot-clé est utilisé. Tant la superclasse et sous-classe doivent déclarer des méthodes virtuelles avec le mot-clé «virtuel». Cela signifie que le C + + compilateur vous que la classe est incomplète, et il doit obtenir des informations de la sous-classe pour le compléter.
Utilisation de la sous-classe pour compléter la superclasse ne signifie
pas que les sous-classes écraser l'autre si elles ont la même classe de
base, et à la place du compilateur C + + prend soin de déterminer
quelles pièces vont avec chaque objet.
Depuis une classe de base virtuelle est requise pour l'héritage virtuel, les fonctions globales en C + + ne peuvent pas être déclarés virtuel. Ce type d'héritage ne peut être utilisé lors de son adhésion la programmation orientée objet (POO) de principes. La raison à cela est que les fonctions globales ne sont pas associés à une catégorie particulière, et sont donc généralement autonome leur propre chef. Sans une superclasse et sous-classe héritage ne peut pas se produire, si les fonctions globales et l'héritage virtuel s'excluent mutuellement. Fonctions globales peuvent, en théorie, être utilisés à l'intérieur des fonctions virtuelles, mais l'inverse ne peuvent pas toujours travailler.
Depuis une classe de base virtuelle est requise pour l'héritage virtuel, les fonctions globales en C + + ne peuvent pas être déclarés virtuel. Ce type d'héritage ne peut être utilisé lors de son adhésion la programmation orientée objet (POO) de principes. La raison à cela est que les fonctions globales ne sont pas associés à une catégorie particulière, et sont donc généralement autonome leur propre chef. Sans une superclasse et sous-classe héritage ne peut pas se produire, si les fonctions globales et l'héritage virtuel s'excluent mutuellement. Fonctions globales peuvent, en théorie, être utilisés à l'intérieur des fonctions virtuelles, mais l'inverse ne peuvent pas toujours travailler.
L'héritage virtuel est utilisé pour résoudre de nombreux problèmes de
programmation, et l'un des plus utiles est la résolution de l'ambiguïté.
Dans l'héritage multiple, on peut avoir une classe A de base qui a deux
sous-classes, B et C, puis une classe D qui hérite de deux classes B et
C. Ce modèle est communément appelé le «diamant de la mort", parce que
si les classes A, B et C ont toutes mises en oeuvre de la même manière,
il n'est pas possible de classe D pour déterminer quelle application
qu'il doit utiliser.
L'héritage virtuel permet de résoudre ce problème, car la mise en œuvre
de chaque classe reste distincte, et donc sans ambiguïté.
Cette distinction est gérée par les objets internes spécialisées
appelées tables virtuelles (VTables) qui gardent la trace de chaque type
d'objet, mais ces tableaux n'ont pas besoin d'être explicitement
manipulé par un programmeur parce qu'ils sont construits dans la langue.