假设我有:
class Base {
public:
virtual ~Base() = 0;
}
class Derived: public Base {
public:
~Derived();
}
在我的代码中,我需要通过 Base
指针删除 Derived
类,如下所示:
delete[] pt_base;
但是,我实际上并没有在实现的析构函数中销毁任何东西。但是我仍然需要他们通过基类删除?
在没有大量浪费代码和空析构函数的情况下实现我想要的目标的最佳方法是什么?
最佳答案
不,Base
类的虚拟析构函数声明/定义就足够了,尽管将其抽象化需要您在 Derived
类中提供此析构函数。
如果你只是声明
class Base {
public:
virtual ~Base() {} // <<< Have a definition
};
您不需要在继承的类中指定任何析构函数。
关于c++ - 如果派生类不包含静态数据,我是否需要为派生类实现自己的析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220143/