当其他类对象作为本类中的成员时:
- 构造的顺序是:先调用其他类的构造,再调用本类的构造。
- 析构的顺序是:和构造的顺序是相反的。
成员的构造先后顺序是根据在类中的顺序决定的,跟构造方法中的初始化顺序无关。
//手机类
class Phone
{
public:
string Phone_Name;
Phone()
{
cout << "Phone 的无参构造函数调用" << endl;
}
Phone(string Pname)
{
cout << "Phone 的有参构造函数调用" << endl;
Phone_Name = Pname;
}
~Phone()
{
cout << "Phone 的析构函数调用" << endl;
}
};
//游戏类
class Game
{
public:
string Game_Name;
Game()
{
cout << "Game 的无参构造函数调用" << endl;
}
Game(string Gname)
{
cout << "Game 的有参构造函数调用" << endl;
string Game_Name = Gname;
}
~Game()
{
cout << "Game 的析构函数调用" << endl;
}
};
class People
{
public:
string m_Name;//姓名
Game Game_Name;//游戏
Phone Phone_Name;//手机
People()
{
cout << "People 的无参构造函数调用" << endl;
}
People(string name, string Gname, string Pname) :m_Name(name), Game_Name(Gname), Phone_Name(Pname)
{
cout << "People 的有参构造函数调用" << endl;
}
~People()
{
cout << "People 的析构函数调用" << endl;
}
};
void test()
{
People p1("Jerry", "Xiaomi", "GTA");
}
输出结果: