C++:派生类对象的最终完成顺序
C++ : Order of finalization of a derived class object
我知道类对象的最终确定顺序如下:
- 析构函数的执行主体
- 销毁对象(即释放用于数据成员的内存)
现在有人问我派生类对象的最终顺序。我想它是完全相同的,但是在执行上述步骤后是否也调用了基类对象的析构函数?
我不这么认为,但想确定考试。
感谢您的帮助:)
析构函数以与构造相反的顺序调用。这意味着基类的析构函数将在派生类的析构函数之后自动调用。
举个例子:
class Foo
{
protected:
SomeType var;
public:
~Foo() {}
};
class Baz : public Foo
{
public:
~Baz()
{
var.doSomething();
}
};
如果在类 Baz 的析构函数之前调用基类 Foo 的析构函数,那么对象 var 将被销毁(它的析构函数将在 Foo 销毁时自动调用),您将进入未定义行为的领域。
这是对析构函数为何以这种方式调用的简单直观的解释。
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 为什么不;名字在地图上是按顺序排列的吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在派生函数中指定void*参数
- 如何通过派生类函数更改基类中的向量
- 数到第n个楼梯的路(顺序无关紧要)
- 如何委托派生类使用其父构造函数?
- 优先顺序:智能指针和类析构函数
- 在循环中按顺序遍历成员变量
- 独立读取-修改-写入顺序
- 如何使用单独文件中的派生类访问友元函数对象
- 派生类销毁的最佳实践是什么
- 如何使用基类指针引用派生类成员
- 在派生类中指定基类的C++顺序
- 派生类中的初始化顺序
- C++:派生类对象的最终完成顺序
- 成员顺序,派生顺序