n0p*_*0pe 0 c++ polymorphism destructor virtual-destructor
比方说我有:
class Base {
public:
virtual ~Base() = 0;
}
class Derived: public Base {
public:
~Derived();
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我需要Derived通过Base指针删除类,如下所示:
delete[] pt_base;
Run Code Online (Sandbox Code Playgroud)
但是,在实现的析构函数中,我实际上没有任何东西可以破坏.但我仍然需要它们通过基类删除?
如果没有大量浪费的代码和空的析构函数,实现我想要的最佳方法是什么?
不,虚拟析构函数声明/ Base类的定义就足够了,尽管将其抽象化需要在Derived类中提供这个析构函数.
如果你只是申报
class Base {
public:
virtual ~Base() {} // <<< Have a definition
};
Run Code Online (Sandbox Code Playgroud)
您不需要在继承的类中指定任何析构函数.