首页 > 解决方案 > 析构函数上的虚拟传播

问题描述

我知道这会virtual传播到派生类方法,并且可以选择在派生类的方法声明上放置关键字,并且我知道我必须将其标记为virtual基类的析构函数,以便进行多态破坏,但是我想知道派生类的默认析构函数是否继承自基类virtual的虚拟析构函数,所以我必须在派生类上显式编写它。

例子:

class A{
public:
    virtual ~A() override = default;
}
class B: public A{
public:
    // have i to write this or it's already what the compiler get as default?
    virtual ~B() override = default;
}

标签: c++polymorphismdestructor

解决方案


尽管派生类的析构函数与基类的析构函数名称不同,但它会覆盖基类析构函数。就像任何其他覆盖一样,如果它覆盖的是虚拟的,它就是虚拟的。


推荐阅读