可能重複:
Calling virtual functions inside constructorsC++虛擬方法覆蓋
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;
}
爲什麼init()
和deinit()
沒有正確重寫和基類的方法AR電子而不是子類的?有什麼要求使它工作?
BaseClass::init()
BaseClass::deinit()
@LightnessRacesinOrbit:對不起。我沒有直接將這個問題與構造函數和析構函數關聯起來,我想這就是爲什麼我沒有找到這個問題。 –
我想說的理由是,允許'SubClass'的構造函數假定'BaseClass'在執行時完全構造。類似於析構函數。 –