Powiel możliwe:
Calling virtual functions inside constructorsC++ wirtualna metoda przesłanianie
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;
}
Dlaczego init()
i deinit()
nieprawidłowo nadpisane i metody BaseClasses' ar e wywołane zamiast tych SubClasses? Jakie są wymagania, aby to działało?
BaseClass::init()
BaseClass::deinit()
@LightnessRacesinOrbit: Przepraszam za to. Nie skojarzyłem bezpośrednio problemu z konstruktorem i destruktorem, co chyba było przyczyną, dla której nie znalazłem tego pytania. –
Domyślam się, że konstruktor 'SubClass' może założyć, że' BaseClass' jest całkowicie skonstruowany podczas wykonywania. Podobny dla destruktora. –