前言
我们要学会用类对象作为 类成员,那让我们来深究一下构造函数和析构函数的先后顺序
正文
看代码
#define CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
// 来学习类对象作为类成员
// c++类中的成员可以是另外一个类的对象,我们称该成员为 对象成员
class Phone
{
public:
Phone(string pname)
{
cout << " phone 的构造函数调用 " << endl;
m_PName = pname;
}
~Phone()
{
cout << " Phone 的析构函数的调用 " << endl;
}
string m_PName;
};
class Person
{
public:
Person(string name, string pName):m_Name(name),m_Phone(pName)
{
cout << " person 的构造函数的调用 " << endl;
}
~Person()
{
cout << " Person 的析构函数调用 " << endl;
}
// 人的姓名
string m_Name;
//手机
Phone m_Phone;
};
// 当其他类对象作为本类成员,构造时候先构造类对象,再构造自身
//析构的顺序与之相反
void test()
{
Person p("张三", "华为p60pro");
cout << p.m_Name << " 拿着 " << p.m_Phone.m_PName << " 的手机 " << endl;
}
int main()
{
test();
return 0;
}
代码运行效果如下:
总结:
- 构造函数的调用顺序是先构造类对象成员,再构造自身类对象。
- 析构函数的调用顺序与构造相反,先销毁自身类对象,然后销毁类对象成员。这确保了对象的资源在适当的时候被释放,避免内存泄漏。