class A { }
class B
{
A a;
}
B 类中有对象 A 作为成员,A 为对象成员
那么当创建B对象时,A与B 的构造与析构的先后顺序之别。
#include <iostream>
#include <cstdio>
using namespace std;
class Phone
{
public:
Phone(string name)
{
m_Pname = name;
cout << "这是Phone的构造函数调用" <<endl;
}
~Phone()
{
cout << "这是Phone的析构函数调用" <<endl;
}
string m_Pname;
};
class Person
{
public:
// Phone m_phone = phone 隐式转换法
Person(string name,string phone):m_name(name),m_phone(phone)
{
cout << "这是Person的构造函数调用" <<endl;
}
~Person()
{
cout << "这是Person的析构函数调用" <<endl;
}
//姓名
string m_name;
//手机
Phone m_phone;
};
//当其他类对象作为本类成员,构造时先构造类对象,再构造自身
//析构的顺序与构造相反
void test01()
{
Person p("JinChi","苹果PLUS");
cout << "姓名:" << p.m_name << "手机号:" << p.m_phone.m_Pname <<endl;
}
int main()
{
test01();
return 0;
}