当类对象作为类成员时,称为 对象成员
例:定义一个车类,再定义一个人类,在人类中创建一个车类的对象
class Car{
string m_car_name; //车名
};
class Person{
string m_name; //人名
Car m_car; //车,m_car 就是对象成员
};
我们要讨论的问题:
当我们实例化一个人类对象的时候,是先有车对象 还是先有人对象?
当程序结束的时候,是先释放车对象的内存 还是人对象?
这个问题可以转化为:
创建人对象时,车和人的 构造函数 谁先调用
销毁人对象时,车和人的 析构函数 谁先调用
代码实现:
class Car{ //车类
public:
Car(){
cout << "Car构造函数的调用" << endl;
}
~Car(){
cout << "Car析构函数的调用" << endl;
}
string m_car_name;
};
class Person{ //人类
public:
Person(){
cout << "Person构造函数的调用" << endl;
}
~Person(){
cout << "Person析构函数的调用" << endl;
}
string m_name;
Car m_car;
};
Person p; //创建人类对象
运行结果为:
结论:
先调用对象成员的构造,再调用本类构造
析构顺序与构造顺序相反