C'est quoi un heritage virtuel

Fermé
quake - 28 avril 2009 à 01:06
 loupius - 28 avril 2009 à 13:38
Bonjour,
je suis débutant en C++, et donc m'a question pourrait paraître très débile .... :-)
donc VOILA :
Qu'est ce que c'est qu'un héritage virtuel (voici un petit exemple)

class AAAAA: virtual public BBBBBB
{
********
}

MERCI BCPP
A voir également:

2 réponses

Non la question n'est pas débile, mais ce n'est pas un question de débutant !
La réponse est simple: dans l'exemple donné, ça ne change strictement rien; oh, je t'entends déjà poser la question: mais pourquoi mettre 'virtual' ? Ce ne peut être utilisé que dans le cas d'héritage multiple; je vais essayer d'expliquer sans rentrer dans le détail.
class A { public: int a; };
class B : virtual public A { public: int b; };
class C : virtual public A { public: int c; };
class M : public B, public C { public; int m; };

S'il n'y avait pas 'virtual', la classe M recevrait deux copies de 'int a' (l'une par B et l'autre par C).
Dans la cas présent, 'virtual' impose une unicité de 'int a'; donc &M.B::a, &M.C::a et &M.a pointent vers le même objet.
Voilà, je ne m'étendrais pas plus; c'est rarement utilisé.
Bon courage.
4
redskins72 Messages postés 7109 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 18 décembre 2016 646
28 avril 2009 à 01:15
tiens cela va repondre a tes question : https://www.commentcamarche.net/contents/556-java-l-heritage
0