Aufrufreihenfolge



  • Hallo

    Also folgendes:

    Eine Basisklasse und mehrere abgeleitete Klassen. In der Basisklasse gibt es eine virtuelle Funktion. Init().

    Diese Funktion kann also nun von den abgeleiteten Klassen überschrieben werden oder nicht. Wenn sie überschrieben wird muss sie auch aufgerufen werden. Aber zusätzlich auch die Basisklassenfunktion.

    Was ist nun besser. Jede Klasse egal in welcher Hierarchiestufe ruft ihre eigene Init() im Konstruktor auf. Oder nur die Basisklasse ruft die Init() auf und wenn die Funktion in einer abgeleitetetn Klasse überschrieben wird muss diese dann auch immer die Basisklassenfunktion aufrufen?



  • Hallo.

    Keiner eine Antwort oder doch zu kompliziert erklärt. Sorry wenn ich mich vordränge, aber ohne das komme ich nicht so recht weiter.



  • Hallo.

    Hat immer noch keinen einen Lösungsvorschlag?



  • Die Frage ist, ob die init der Basisklasse wirklich virtuell sein sollte. Bei deiner 2. Fassung ist das eher zweifelhaft. Mach das init einfach normal in die Basisklasse. Und wenn Kindklassen später weitere init-Aufgaben haben, machen sie das halt auch einfach im Konstruktor. Virtuelle Funktionen sind da bei dir, zumindest wie das in deiner Beshreibung klingt, fehl am Platz.


Log in to reply