Mögliche Duplizieren:
Calling virtual functions inside constructorsC++ virtuelle Methode überschrieben
main.cpp
#include <iostream>
class BaseClass {
public:
BaseClass() {
init();
}
virtual ~BaseClass() {
deinit();
}
virtual void init() {
std::cout << "BaseClass::init()\n";
}
virtual void deinit() {
std::cout << "BaseClass::deinit()\n";
}
};
class SubClass : public BaseClass {
public:
virtual void init() {
std::cout << "SubClass::init()\n";
}
virtual void deinit() {
std::cout << "SubClass::deinit()\n";
}
};
int main() {
SubClass* cls = new SubClass;
delete cls;
return 0;
}
Warum init()
ist und deinit()
nicht richtig außer Kraft gesetzt und die Methoden der Basisklassen ar e rief anstelle der SubClasses ein? Was sind die Voraussetzungen, damit es funktioniert?
BaseClass::init()
BaseClass::deinit()
@LightnessRacesinOrbit: Entschuldigung dafür. Ich habe das Problem nicht direkt mit dem Konstruktor und dem Destruktor assoziiert, was vermutlich der Grund war, warum ich diese Frage nicht gefunden habe. –
Ich denke, die Begründung ist, dass "SubClass" -Konstruktor annehmen darf, dass 'BaseClass' vollständig konstruiert ist, wenn es ausgeführt wird. Ähnlich für den Destruktor. –