8得票3回答
为什么抽象类的默认析构函数不是虚函数?

考虑以下内容: class A { public: virtual void foo () = 0; }; 目前显然可以看出A是一个抽象类,永远不会独立实例化。那么为什么标准没有要求自动生成的析构函数也必须是虚拟的呢? 每当我需要在我的接口类中定义一个虚拟的空析构函数时,我就会问...

13得票5回答
制作受保护的析构函数有必要使用虚函数吗?

/*Child is inherited from Parent*/ class Parent { public: Parent () //Constructor { cout << "\n Parent constructor call...

8得票3回答
直接调用(虚)析构函数是否有效?

在这个答案中,Ryan直接调用了虚析构函数。我已经在VS2010中测试了代码,并且它正确地调用了所有析构函数(使用日志记录进行测试)。这样做实际上是有效的吗?这种方法有什么问题、缺陷甚至优点? 我只能把它看作是一种重置实际类型的方法,即使它们没有覆盖虚拟的reset函数,因为它们至少必须在析...

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

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

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

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

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

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

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

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

21得票5回答
使用非虚拟析构函数有什么特定的原因吗?

据我所知,任何被指定为有子类的类都应该声明为虚析构函数,这样当通过指针访问它们时,类实例可以被正确地销毁。 但是为什么可以声明非虚析构函数的类呢?我相信编译器可以决定何时使用虚析构函数。那么,这是C++设计上的疏忽还是我漏掉了什么?

14得票2回答
为什么虚析构函数需要使用delete运算符

在一个独立的情境中(没有标准库,例如在操作系统开发中),使用g++会发生以下现象:class Base { public: virtual ~Base() {} }; class Derived : public Base { public: ~Derived() {} }; ...

25得票4回答
C++中的虚默认析构函数

我有一组大量的继承类(criteria),它们都继承自一个基类(criterion)。这是criterion的代码:class criterion { public: virtual unsigned __int32 getPriorityClass() const = 0; ...