gpt4 book ai didi

c++ - 在派生类中声明非虚拟析构函数是否安全

转载 作者:行者123 更新时间:2023-11-30 00:48:46 25 4
gpt4 key购买 nike

在程序中:

struct A
{
virtual ~A(){ }
};

struct B : A
{
~B(){ }
};
int main(){ }

标准N4296::12.4/9:

If a class has a base class with a virtual destructor, its destructor (whether user- or implicitly-declared) is virtual.

所以,编译器会重新声明结构 B 中的析构函数为它自己的虚拟,对吗?那为什么我们被允许声明这样一个析构函数呢?这可能会让其他开发人员感到困惑。

最佳答案

覆盖虚拟成员函数的函数始终是虚拟的,无论您是否声明 virtual。因此 B::~B() 始终是虚拟的,因为 A::~A() 是虚拟的。

关于c++ - 在派生类中声明非虚拟析构函数是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com