析构函数上的虚拟传播

问题描述 投票:0回答:1

我是C ++虚拟函数和多态性的新手,如果我说错话,抱歉。我知道virtual会传播到派生类方法,并且可以选择在派生类的方法声明中将as作为关键字放入,并且我知道我必须将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++ polymorphism destructor
1个回答
0
投票

是,一旦在基类中将成员函数(包括析构函数)标记为virtual,则在所有派生类中将其保留为virtual

您可以在virtual声明中省略关键字~B(),甚至如果它为空,甚至可以完全省略~B()

© www.soinside.com 2019 - 2024. All rights reserved.