You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承含虚析构函数基类的final派生类:析构函数相关疑问

C++ 派生类析构函数的virtual与final修饰问题

先看给出的代码示例:

class Base {
public:
  virtual ~Base() { 
    // some impl
  }
};

class Derived final : public Base {
public:
  virtual ~Derived() override {
    // some other impl
  }
};

针对两个问题解答如下:

  1. Derived类的析构函数~Derived是否需要添加virtual说明符?
    不需要。只要基类的析构函数是virtual的,派生类的析构函数会自动继承虚属性,哪怕不写virtual关键字,它依然是虚函数。这里已经加了override关键字,足以明确这是对基类虚析构函数的重写,virtual属于冗余写法,写了不报错,但完全没必要。

  2. 是否应该将~Derived标记为final?
    完全没必要。因为Derived类本身已经被标记为final,意味着这个类根本不能被其他类继承。既然没有子类能继承它,自然也就不存在子类重写它的析构函数的情况,给析构函数加final纯粹是画蛇添足,没有任何实际意义。

内容的提问来源于stack exchange,提问作者excommunicado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:15:21