每个人都说,当至少一个类方法是虚拟的时,析构函数应该是虚拟的。
我的问题是,在使用向上转换时说析构函数应该是虚拟的不是正确的吗?
class A {
public:
~A(){
cout << "Destructor in A" << endl;
}
};
class B: public A
{
public:
~B(){
cout << "Destructor in B" << endl;
}
};
int main()
{
A* a = new B;
cout << "Exiting main" << endl;
delete a;
}
我在这段代码中没有任何虚函数,但是如果我不将我的基本析构函数设为虚拟,它就不会调用 B 析构函数。是的,我知道如果我没有虚拟功能,使用 ucpasting 毫无意义。
谢谢你。