c++ - 如果派生类不包含静态数据,我是否需要为派生类实现自己的析构函数?

标签 c++ polymorphism destructor virtual-destructor

假设我有:

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/

相关文章:

c++ - 表示简单电路时的最佳数据结构 - C++

c# - 方法重载和多态性

c++ - 如何使用智能指针正确销毁 C++ 类

java - 构造函数中的多态方法 (Java)

java - 像接口(interface)一样使用第三方抽象类?

c++ - 如何跟踪调用析构函数的位置 - C++

C#,有没有像golang那样的 'Defer Call'?

c++ - 错误: Expression must have class type for size()

c++ - 为什么不能在 switch 语句中声明变量?

c++ - "File could not be opened."C++ fstream