【发布时间】:2015-08-19 21:59:09
【问题描述】:
在节目中:
struct A
{
virtual ~A(){ }
};
struct B : A
{
~B(){ }
};
int main(){ }
标准N4296::12.4/9:
如果一个类有一个带有虚析构函数的基类,它的析构函数 (无论是用户声明还是隐式声明)是虚拟的。
所以,编译器会自行将结构B 中的析构函数重新声明为虚函数,对吗?那么为什么允许我们声明这样的析构函数呢?其他开发人员可能会感到有些困惑。
【问题讨论】:
-
我猜是这样,如果你省略
virtual关键字,它会从它的基类继承它的虚拟性。 -
所有功能的工作方式相同。是的,这有点令人困惑。
标签: c++ inheritance destructor virtual-functions