首先创建Phone类和Game类
// 手机类
class Phone {
public:
string m_Pname;
Phone() {
cout << "Phone的无参构造" << endl;
}
Phone(string pname) {
cout << "Phone的有参构造" << endl;
m_Pname = pname;
}
~Phone() {
cout << "Phone的析构函数" << endl;
}
};
// 游戏类
class Game {
public:
string m_Gname;
Game() {
cout << "Game的无参构造" << endl;
}
Game(string gname) {
cout << "Game的有参构造" << endl;
m_Gname = gname;
}
~Game() {
cout << "Game的析构函数" << endl;
}
};
然后定义Person类
class Person {
public:
//声明顺序
string m_Name; // 姓名
Phone m_Phone; // 手机
Game m_Game; // 游戏
Person() {
cout << "Person的无参构造" << endl;
}
Person(string name, string pname, string gname) : m_Name(name), m_Phone(pname), m_Game(gname) {
//这样做可以是因为m_Game(gname)这句话可以调用Game类的有参构造
cout << "Person的有参构造" << endl;
}
~Person() {
cout << "Person的析构函数" << endl;
}
};
当其他类对象作为本类的成员,构造顺序是先调用其他类的构造(其他类之间的顺序看在本类中的声明顺序)再调用本类的构造函数。析构顺序相反。
其他类之间的顺序看在本类中的声明顺序,与初始化顺序无关。