c++ 学习 之 类对象作为 类成员 ,构造函数和析构函数的先后顺序

前言

我们要学会用类对象作为 类成员,那让我们来深究一下构造函数和析构函数的先后顺序

正文

看代码

#define CRT_SECURE_NO_WARNINGS
#include
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;
}

代码运行效果如下:
c++ 学习 之 类对象作为 类成员 ,构造函数和析构函数的先后顺序_第1张图片
总结:

  • 构造函数的调用顺序是先构造类对象成员,再构造自身类对象。
  • 析构函数的调用顺序与构造相反,先销毁自身类对象,然后销毁类对象成员。这确保了对象的资源在适当的时候被释放,避免内存泄漏。

你可能感兴趣的:(c++,c++,学习,开发语言)