Ereditarietà multipla e classi base virtuali

  • 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

© Ing. Stefano Salvi - All rights reserved