构造函数不能是虚函数
因为对象在完成构造前虚函数表还没有构造好,所以是不能通过虚函数表来获取构造函数的。在构造函数中调用虚函数也只能调用局部的虚函数。
析构函数可以是虚函数
虚函数的构造函数可以使得当使用基类的指针或者引用来销毁对象使可以完成派生类(子类)的构造。如果析构函数不是虚函数,基类无法调用派生类的析构函数。则当基类的指针或者引用销毁对象时资源无法完全释放。
class A {}; class B : public A {} void func(A &m) { delete &m; } int main(void) { B m; func(m); }
Powered by Froala Editor
发表评论 (对文章评论)