可能重复:
我是否需要显式调用基本虚拟析构函数?
假设您有以下内容:
class ParentClass {
...
virtual ~ParentClass();
和
class ChildClass {
...
virtual ~ChildClass();
哪个析构函数会被调用?父母和孩子的析构函数都会被调用吗?目前没有在我的计算机上设置 C++ 编译器。
可能重复:
我是否需要显式调用基本虚拟析构函数?
假设您有以下内容:
class ParentClass {
...
virtual ~ParentClass();
和
class ChildClass {
...
virtual ~ChildClass();
哪个析构函数会被调用?父母和孩子的析构函数都会被调用吗?目前没有在我的计算机上设置 C++ 编译器。
如果ChildClass
是从派生的,ParentClass
那么首先调用派生的析构函数,然后是父类。正如它在您的代码中所代表的那样,ChildClass
不继承自ParentClass
是的,两个构造函数都被调用:构造和销毁是对称的:所有子对象都以与创建它们的顺序完全相反的顺序被销毁。对于破坏顺序,析构函数是否为虚拟无关紧要。虚拟析构函数与非虚拟析构函数的唯一影响是当delete
使用指向基的指针 ing 驱动类型的对象时:如果基的析构函数不是虚拟的,这将导致未定义的行为。