Vererbung und Konstruktoren



  • Hallo,

    folgende Frage:

    ich habe eine Klasse Ober und eine Klasse Unter die von der Oberklasse erbt.

    Die Klasse Ober hat eine protected int Variable x und einen Default Konstruktor (und Destr.) der diesen Wert auf 0 setzt.

    Die Klasse Unter hat eine private int Variable y und einen Default Konstruktor (und Destr.) der diesen Wert auf 0 setzt.

    Welche Konstruktoren bzw. Destruktoren (und warum) werden aufgerufen, wenn

    - eine neue Instanz der Klasse Unter angelegt wird
    - eine Instanz der Klasse "zerstört" wird
    - mit new neue Instanzen der Klasse unter angelegt werden
    - wenn mit delete diese Instanzen wieder gelöscht werden

    ----------
    Es geht darum ob man in den Konstruktoren der "Kinderklassen" die Konstruktoren der "Elternklassen" aufrufen muss.

    Danke
    Capasso



  • Früher, da war alles besser, damals hat man sowas noch selbst ausprobiert, indem man etwas à la "ctor Unter" im Konstruktor ausgegeben hat.



  • Habe leider momentan keinen Compilier zur Verfügung -> würde es aber gerne wissen



  • eine neue Instanz der Klasse Unter angelegt wird oder mit new neue Instanzen der Klasse unter angelegt werden

    1 Konstruktor von Ober
    2 Konstruktor von Unter

    eine Instanz der Klasse "zerstört" wird oder wenn mit delete diese Instanzen wieder gelöscht werden

    falls der Destruktor von Ober virtual ist (was er sein sollte):
    1 Destruktor von Unter
    2 Destruktor von Ober
    falls der Destruktor von Ober nicht virtual ist (was nicht sein sollte und imho ein Fehler ist):
    1 nur Destruktor von Ober



  • Danke



  • bluecode schrieb:

    falls der Destruktor von Ober nicht virtual ist (was nicht sein sollte und imho ein Fehler ist):
    1 nur Destruktor von Ober

    Das passiert nur, wenn man ein Unter-Objekt mittels delete eines Ober-Zeigers löscht. Nicht generell.


Log in to reply