当类A的对象作为另一个类B的成员时,被称为
「对象成员」
此时,构造函数的调用顺序为
先A后B(零件组装为整体)
析构函数的调用顺序为先B后A(整体拆分为零件)
#include <iostream> using namespace std; #include <string> class Phone{ public: Phone(string pName){ m_PName = pName; cout<<"Phone的构造函数调用"<<endl; } ~Phone(){ cout<<"Phone的析构函数调用"<<endl; } string m_PName; }; class Person{ public: // 有参构造 // 使用初始化列表代替传统初始化方法 Person(string name, string pName) : m_Name(name),m_Phone(pName) { cout<<"Person的构造函数调用"<<endl; } ~Person(){ cout<<"Person的析构函数调用"<<endl; } string m_Name; Phone m_Phone; // 类对象作为另一个类的成员 }; void test01(){ Person p("张三", "iphone 13"); cout << p.m_Name << "拿着" << p.m_Phone.m_PName << endl; } int main(){ test01(); }
输出结果为: