C++中构造函数的调用顺序
创建一个子类对象可能会牵涉多个类。只有全部准备工作做完之后,子类才会调用自己的构造函数。
准备工作的顺序
- 静态成员变量的构造函数
- 虚基类的构造函数,按继承顺序构造
- 基类的构造函数,按继承顺序构造
- 非静态成员变量的构造函数
- 当前类自己的构造函数
Base1, Base2:两个基类
Base3:子类一个成员的类
Base4:子类一个静态成员的类
#include <iostream>
using namespace std;
class Base1 {
public:
Base1(int i) {
cout << "B1 construct" << endl;}
~Base1() {
cout << "B1 deconstruct" << endl; }
};
class Base2 {
public:
Base2(int i) {
cout << "B2 construct" << endl;}
~Base2() {
cout << "B2 deconstruct" << endl