Virtuelle Basis?



  • Hallo,
    Ich hab folgendes schon öfters gesehen und es würde mich interssieren was es eigentlich bewirkt:

    class A{}
    class B:public virtual A{}
    

    Was bedeutet das virtual da?





  • Danke, ich werd mir das mal ansehen.



  • Ok ich glaub ich hab das jetzt verstanden aber werden bei folgendem Beispiel 2 UltimateBase erzeugt oder hab ich das doch nicht so ganz verstanden:
    class UltimateBase{};
    class Base1:public virtual UltimateBase{};
    class Base2:public virtual UltimateBase{};
    class Base3:public UltimateBase{};
    class Derived:public Base1,public Base2,public Base3{};
    Ein UltimateBase das von Base1 und Base2 geteilt wird und eines für Base3.

    Und was passiert im folgenden Beispiel:

    class UltimateBase{};
    class Base1:public virtual UltimateBase{};
    class Base2:public virtual UltimateBase{};
    class Derived1:public Base1,public Base2{};
    class Base3:public virtual UltimateBase{};
    class Base4:public virtual UltimateBase{};
    class Derived2:public Base3,public Base4{};
    class UltimateDerived:public Derived1,public Derived2{};
    


  • Fragender2 schrieb:

    Ok ich glaub ich hab das jetzt verstanden aber werden bei folgendem Beispiel 2 UltimateBase erzeugt oder hab ich das doch nicht so ganz verstanden:
    class UltimateBase{};
    class Base1:public virtual UltimateBase{};
    class Base2:public virtual UltimateBase{};
    class Base3:public UltimateBase{};
    class Derived:public Base1,public Base2,public Base3{};
    Ein UltimateBase das von Base1 und Base2 geteilt wird und eines für Base3.

    Und was passiert im folgenden Beispiel:

    class UltimateBase{};
    class Base1:public virtual UltimateBase{};
    class Base2:public virtual UltimateBase{};
    class Derived1:public Base1,public Base2{};
    class Base3:public virtual UltimateBase{};
    class Base4:public virtual UltimateBase{};
    class Derived2:public Base3,public Base4{};
    class UltimateDerived:public Derived1,public Derived2{};
    

    Das solte helfen:
    Definire mal in jeder Klasse non-args Konstruktor mit couts.
    Dieses wird dir die Antwort geben in welcher Reihenfolge die Konstruktoren aufgerufen werden.


Anmelden zum Antworten