#include <iostream>
using namespace std;
/************************************************************************
类的对象作为数据成员时
1.其他类对象作为本类数据成员时,其他类对象构造函数先调用,再调用本类构造函数,析构时,析构函数调用顺序相反
变量存放在栈区空间,先申请的在下面,后申请的在上面,释放时先释放上面,后释放下面(先进后出)
/************************************************************************/
class Phone{
public:
//初始化列表进行初始化
Phone(string phone, int much):m_phn(phone),m_much(much)
{
cout<<"Phone构造函数"<<endl;
}
~Phone()
{
cout<<"Phone析构函数"<<endl;
}
string m_phn;
int m_much;
};
class Person{
public:
//m_phone(phone)这种赋值方式是隐式法赋值,编译器转为临时对象有参构造函数:Phone m_phone=Phone(phone,much)
Person(int age, string phone, int much ):m_age(age),m_phone(phone,much)
{
cout<<"Person构造函数"<<endl;
cout<<"age:"<<m_age<<endl;
cout<<"phone:"<<m_phone.m_phn.c_str()<<endl;
cout<<"much:"<<m_phone.m_much<<endl;
}
~Person()
{
cout<<"Person析构函数"<<endl;
}
int m_age;
Phone m_phone;
};
void test1()
{
Person per(20,"小米10",3000);
}
int main()
{
test1();
return 0;
}
C++ 类对象作为数据成员
最新推荐文章于 2022-07-08 21:59:43 发布
本文探讨了C++中当一个类的对象作为另一个类的数据成员时,构造函数和析构函数的调用顺序。通过具体示例,解释了如何使用初始化列表进行成员初始化,并展示了构造和析构过程中的输出,帮助理解对象生命周期。
2021

被折叠的 条评论
为什么被折叠?



