Nik*_*s R 7 c++ inheritance virtual-functions
可能重复:
在构造函数内调用虚函数
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;
}
Run Code Online (Sandbox Code Playgroud)
为什么init()
并deinit()
没有正确重写和基类的方法被调用,而不是子类的吗?使其有效的要求是什么?
BaseClass::init()
BaseClass::deinit()
Run Code Online (Sandbox Code Playgroud)