C++构造函数和析构函数的调用顺序
2014-03-16 11:00
288 查看
析构函数的调用顺序是从底往上的:
[1] first, the constructor invokes its base class constructors,
首先,是调用该类的基类构造函数
[2] then, it invokes the member constructors, and
然后是该成员类的构造函数(重要记忆,有些书好像没有提到)
[3] finally, it executes its own body.
最后才是本类的构造函数
而析构函数的调用顺序刚好是相反
A destructor ‘‘tears down’’ an object in the reverse order:
[1] first, the destructor executes its own body,
首先调用本类的析构函数
[2] then, it invokes its member destructors, and
然后调用成员类的析构函数
[3] finally, it inv okes its base class destructors.
最后才是基类的析构函数
特别指出:虚基类是在其他任何类之前调用构造函数的,而在所有其他类之后调用析构函数的。
这样的调用顺序是为了保证基类或者成员类没有在他们创建之前被调用,或者在析构之后还可能被调用。
构造函数根据声明顺序,执行成员类和基类的构造函数,而不是根据初始化列表(initializers)顺序。
[1] first, the constructor invokes its base class constructors,
首先,是调用该类的基类构造函数
[2] then, it invokes the member constructors, and
然后是该成员类的构造函数(重要记忆,有些书好像没有提到)
[3] finally, it executes its own body.
最后才是本类的构造函数
而析构函数的调用顺序刚好是相反
A destructor ‘‘tears down’’ an object in the reverse order:
[1] first, the destructor executes its own body,
首先调用本类的析构函数
[2] then, it invokes its member destructors, and
然后调用成员类的析构函数
[3] finally, it inv okes its base class destructors.
最后才是基类的析构函数
特别指出:虚基类是在其他任何类之前调用构造函数的,而在所有其他类之后调用析构函数的。
这样的调用顺序是为了保证基类或者成员类没有在他们创建之前被调用,或者在析构之后还可能被调用。
构造函数根据声明顺序,执行成员类和基类的构造函数,而不是根据初始化列表(initializers)顺序。
相关文章推荐
- c++构造函数析构函数调用顺序
- C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数
- C++构造函数和析构函数的调用顺序
- C++构造函数和析构函数的调用顺序
- C++构造函数和析构函数的调用顺序
- C++构造函数和析构函数的调用顺序
- 重载new和delete后调用构造函数和析构函数顺序
- 关于 构造函数 与 析构函数 的 调用顺序,摘自网络
- C++构造函数调用顺序
- C++类的构造函数与析构函数的调用顺序
- c++返回对象值时的copy、=、析构函数的调用顺序
- 建立全局和局部对象时,不同的构造函数和析构函数的调用顺序
- C++构造函数调用顺序
- C++继承中构造函数、析构函数调用顺序及虚析构函数
- C++构造函数调用顺序
- 基类派生类构造析构函数调用顺序、成员初始化和销毁顺序
- 类的构造函数与析构函数的调用顺序
- C++继承中构造函数和析构函数的调用顺序
- 重载new和delete后调用构造函数和析构函数顺序
- 建立不同类型对象时,构造函数和析构函数的调用顺序