- Abbiamo visto che uno dei problemi dell'ereditarietà mutlipla era la possibilità
che più classi di base derivassero da una stessa classe
- In questo caso la classe derivata conterrebbe più copie della stessa classe,
generando una possibile ambiguità nell'accesso agli attributi ed ai metodi della superclasse doppia
- Il C++ consente di eliminare questa ambiguità dicharando una classe di base virtuale
- Facciamo un esempio
class A {};
class B {};
class C : virtual public A, protected B {};
class D : virtual public A {};
class E : public C, public D {};
- In questo esempio, pur essendo A superclasse sia di C che di D,
comparirà una sola volta negli oggetti della classe E
|