next up previous contents
Next: Surcharge Up: La liaison dynamique Previous: Liaison dynamique et héritage

Liaison dynamique et héritage virtuel

Considérons l'exemple suivant :

tabular1244

Avec les déclarations :

CV *pcv=new CV;
V* pv=pcv;
AV *pav=pcv;
BV *pbv=pcv;
Un appel de pcv->f(), pav->f() ou pv->f() correspondra à l'appel de AV::f(), avec à chaque fois les décalages nécessaires pour que le this pointe bien sur les le début d'une zone de AV.

De façon plus surprenante, pbv->f() correspond aussi à l'appel de AV::f(), alors que AV n'est ni un ancêtre, ni un héritier de la classe BV.

Une représentation possible sera :

picture1331




Mon Oct 20 14:02:48 MET 1997