文章目录
前言
当一个类的成员是另一个类的对象时, 称该成员为对象成员。
eg:
class A { }
class B
{
A a;
}
A类是B类的成员对象
(又是一个熟悉的套娃,变成的本质就是一层一层套娃)
当A类是B类的成员对象时,谁先构造和解析
代码如下(示例):
#include<bits/stdc++.h>
using namespace std;
class car
{
public:
car(string name)
{
carname=name;
cout<<"car构造"<<endl;
}
string carname;//输入车的名字
~car()
{
cout<<"car析构函数调用"<<endl;
}
};
class person
{
public:
// person(string a)
// {
// name=a; //输入名字
// }
//person构造函数调用
person(string b,string c):name(b),namecar(c)//原理 隐式转换法 string namecar=c
{
cout<<"person 构造函数调用"<<endl;
}
car namecar; //car是person的对象成员
string name;
~person()
{
cout<<"person析构函数调用"<<endl;
}
void test2()
{
cout<<name<<" "<<namecar.carname<<endl;//用 namecar调用carname
}
};
void test()
{
person p1("afana","劳斯莱斯");
p1.test2();
}
int main()
{
test();
return 0;
}
总结
先构造对象成员的构造函数,
最后调用对象成员的析构函数。