class Base{};
class D1:virtual public Base{};
class D2:virtual public Base{};
class DD:public D1,public D2{};
int main(){
Base *pBase=new DD;
delete pBase;
}
Run Code Online (Sandbox Code Playgroud)
这会导致崩溃,但我修改如下:
class Base{
public:
virtual ~Base(){};
};
class D1:virtual public Base{
public:
virtual ~D1(){}
};
class D2:virtual public Base{
public:
virtual ~D2(){}
};
class DD:public D1,public D2{
};
Run Code Online (Sandbox Code Playgroud)
然后,它就通过了,但是默认的析构函数应该是虚拟虚拟函数,不是吗?
c++ destructor virtual-inheritance delete-operator virtual-destructor