C++类中的成员可以是另一个类的对象,我们称该成员为对象成员
例如:
class A{ };
class B{A a;};
当其他类对象作为本类成员,构造时候先构造类对象,再构造自身,析构的顺序与构造相反
例:
#include
using namespace std;
class car
{
public:
car(string name)
{
m_CarName = name;
cout << "car构造函数" << endl;
}
~car()
{
cout << "car析构函数" << endl;
}
string m_CarName;
};
class person
{
public:
person(string name, string cName) :m_Name(name), m_Car(cName)
{
cout << "person构造函数" << endl;
}
~person()
{
cout << "person析构函数" << endl;
}
void key()
{
cout << m_Name << "使用" << m_Car.m_CarName << "牌车" << endl;
}
string m_Name;
car m_Car;
};
int main()
{
person p("李白", "兰博基尼");
p.key();
system("pause");
return 0;
}
运行过程:40行的兰博基尼传给了22行的string cName,22行的string cName传给了22行的m_Car,22行的m_Car来自于35行的car m_Car,35行的m_Car传给了7行的有参构造函数。
总结:当其他类对象作为本类成员,构造时候先构造类对象,再构造自身,析构的顺序与构造相反
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)