1876得票20回答
何时使用虚析构函数?

我对大部分的对象导向编程(OOP)理论有扎实的了解,但有一件事情经常让我困惑,那就是虚析构函数。 我曾以为无论如何,析构函数都会被调用,并且每个对象都要调用一次。 什么时候需要将析构函数声明为虚函数?为什么需要这样做呢?

177得票7回答
为什么在C++中的抽象类中应该声明虚析构函数?

我知道在C++中为基类声明虚析构函数是一种良好的编程实践,但即使作为接口的抽象类,也有必要声明virtual析构函数吗?请提供一些原因和示例。

108得票12回答
什么情况下不应该使用虚析构函数?

在一个类中有没有声明虚析构函数有时候是有好处的,但是否需要特意避免编写虚析构函数呢?

90得票5回答
虚析构函数会被继承吗?

如果我有一个带有虚析构函数的基类,那么派生类是否需要声明虚析构函数?class base { public: virtual ~base () {} }; class derived : base { public: virtual ~derived () {} // 1) ...

74得票2回答
在C++11中,在析构函数之后覆盖标识符

在虚析构函数声明后面加override标识符是否有特殊意义?class Base { public: virtual ~Base() {} virtual int Method() const {} }; class Derived : public Bas...

60得票7回答
每个类都应该有虚析构函数吗?

Java和C#支持使用final和sealed关键字定义不能作为基类的类。然而,在C++中,没有很好的方法防止一个类被派生出来,这让类的作者面临两难境地:是否每个类都应该有一个虚析构函数? 编辑:自C++11起,这不再是真实的,您可以指定一个类为final。 一方面,给一个对象添加...

46得票6回答
你的析构函数应该何时使用虚函数?

可能是重复问题: 何时使用虚析构函数? 在什么情况下,你的C++对象的析构函数应该是virtual?

38得票2回答
默认虚析构函数是否会阻止编译器生成的移动操作?

受到帖子“为什么析构函数禁用隐式移动方法生成?”的启发,我想知道默认虚析构函数是否也是如此。class WidgetBase // Base class of all widgets { public: virtual ~WidgetBase() = default; ...

32得票3回答
为什么[C++]默认情况下析构函数不是虚函数?

为什么C++不会默认将至少有一个其他虚函数的类的析构函数设置为虚函数?在这种情况下,添加虚析构函数对我来说没有成本,而不拥有虚析构函数几乎总是一个错误。 C ++0x会解决这个问题吗?

31得票4回答
C++11中具有虚成员的虚析构函数

在这些幻灯片中,关于C++11/14标准,在第15页上,作者写道,“许多经典编码规则已不再适用”于C++11。他提出了三个例子的清单,我同意三个规则和内存管理。 然而,他的第二个例子是“具有虚成员的虚析构函数”(只是这样)。 这是什么意思? 我知道必须声明基类的析构函数为虚函数,以便在出现像...