对象构造和析构的调用原则
- 继承中的构造和析构
- 子类对象在创建时会首先调用父类的构造函数
- 父类构造函数执行完毕后,才会调用子类的构造函数
- 当父类构造函数有参数时,需要在子类初始化列表(参数列表)中显示调用父类构造函数
- 析构函数调用顺序和构造函数相反
#include <iostream>
#include <string>
using namespace std;
class Base04{
public:
Base04(){
cout << "父类的构造" << endl;
}
~Base04(){
cout << "父类的析构" << endl;
}
};
// Other 要先写,后面在去使用
class Other{
public:
Other(){
cout << "Other 类的构造" << endl;
}
~Other(){
cout << "Other 类的析构" << endl;
}
};
class Son : public Base04{
public:
Son(){
cout << "子类的构造" << endl;
}
~Son(){
cout << "子类的析构" << endl;
}
Other oth; // 座上宾 比自己的构造还要优先执行
};
int main()
{
// Son s1; // 先调用父类构造,再是子类构造,析构相反
Son s1; // 子类中有其他的成员,先调用父类构造,再是子类中其他成员对象的构造,最后是子类中的构造,析构相反
return 0;
}