我是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;
}
是,一旦在基类中将成员函数(包括析构函数)标记为virtual
,则在所有派生类中将其保留为virtual
。
您可以在virtual
声明中省略关键字~B()
,甚至如果它为空,甚至可以完全省略~B()
。