继承含虚析构函数基类的final派生类:析构函数相关疑问
C++ 派生类析构函数的virtual与final修饰问题
先看给出的代码示例:
class Base { public: virtual ~Base() { // some impl } }; class Derived final : public Base { public: virtual ~Derived() override { // some other impl } };
针对两个问题解答如下:
Derived类的析构函数~Derived是否需要添加virtual说明符?
不需要。只要基类的析构函数是virtual的,派生类的析构函数会自动继承虚属性,哪怕不写virtual关键字,它依然是虚函数。这里已经加了override关键字,足以明确这是对基类虚析构函数的重写,virtual属于冗余写法,写了不报错,但完全没必要。是否应该将~Derived标记为final?
完全没必要。因为Derived类本身已经被标记为final,意味着这个类根本不能被其他类继承。既然没有子类能继承它,自然也就不存在子类重写它的析构函数的情况,给析构函数加final纯粹是画蛇添足,没有任何实际意义。
内容的提问来源于stack exchange,提问作者excommunicado
相关产品推荐
相关产品推荐

