可能是重复问题:
在构造函数中调用虚函数
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()
没有被正确地重写,而是调用了 BaseClasses 的方法而不是 SubClasses 的方法?如何满足要求以使其正常工作?BaseClass::init()
BaseClass::deinit()
SubClass
зҡ„жһ„йҖ еҮҪж•°еңЁжү§иЎҢж—¶еҸҜд»ҘеҒҮе®ҡBaseClass
е·Із»Ҹе®Ңе…Ёжһ„е»әеҘҪдәҶгҖӮжһҗжһ„еҮҪж•°еҗҢзҗҶгҖӮ - Alex Chamberlain