-Anatomie et physiologie • Animaux et l'environnement • culture generale • economie • flore et ses bienfaits • Internet et Informatique • L'alimentation et la nutrition • La Biologie • Le mésothéliome • Les épices • Les fruits et légumes • Les vitamines • Maladies & Affections • Médecine et traitements • Médicaments • monde technologique • remèdes naturels • Santé et Bien-être • sciences et génie -orange

dimanche 21 avril 2013

Quel est l'héritage virtuel?

L'héritage virtuel est un type d'héritage dans lequel la mise en œuvre d'une superclasse est incomplète, et une sous-classe est nécessaire pour la définition complète d'un objet. Ce type d'héritage peut être utilisé en conjonction avec l'héritage à la fois unique et multiple, mais est le plus souvent utilisé dans l'héritage multiple. Toute classe qui hérite d'une classe de base virtuelle devient une sous-classe directe de cette classe de base. Une classe de base virtuelle peut compter sur une sous-classe pour mettre en œuvre toutes ses méthodes, mais ce n'est pas une exigence.

C + + est communément appelé langage informatique plus utiliser l'héritage virtuel. Pour déclarer l'héritage virtuel en C + +, le mot «virtuel» est utilisé. Tant la superclasse et sous-classe doivent déclarer des méthodes virtuelles avec le mot-clé «virtuel». Cela indique au compilateur C + + que la superclasse est incomplète, et il doit obtenir des informations à partir 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 s'ils 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, fonctions globales en C + + ne peut être déclaré virtuel. Ce type de succession ne peut être utilisé lors de son adhésion à la programmation orienté objet principes (POO). La raison à cela est que les fonctions globales ne sont pas associées à une classe particulière, et sont donc généralement autonome sur leur propre. Sans un héritage superclasse et sous-classe ne peut pas arriver, fonctions afin mondiaux et l'héritage virtuel s'excluent mutuellement. Les fonctions globales peuvent, en théorie, être utilisées à l'intérieur des fonctions virtuelles, mais l'inverse ne peut 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 de base A qui a deux sous-classes, B et C, puis un D de classe 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 tous implémentations de la même méthode, il n'est pas possible pour la classe D pour déterminer quels mise en œuvre, 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ée par un programmeur parce qu'ils sont construits dans la langue.