C++:類物件作為類成員
阿新 • • 發佈:2021-02-14
C++類中的成員可以是另一個類中的物件,我們稱該成員為 物件成員
例如:
class A{};
class B
{
A a;
};
B類中有物件A作為成員,A為物件成員
那麼當建立B物件時,A與B的構造和析構的順序誰先誰後?
舉例:
class Phone
{
public:
Phone(string pName)
{
m_Pname = pName;
}
//手機品牌名稱
string m_Pname;
};
class Person
{
public:
Person(string name, string pName):m_name(name),m_phone(pName)//相當於Phone m_phone = pName,即隱式轉換法
{
}
//姓名
string m_name;
//手機
Phone m_phone;
};
void test01()
{
Person p("ss", "iPhone");
cout << p.m_name << "拿著" << p.m_phone.m_Pname << endl;
}
執行結果:
那麼,現有的人還是現有的手機呢?
列印輸出一下:
Phone(string pName)
{
cout << "Phone的建構函式呼叫" << endl;
m_Pname = pName;
}
Person(string name, string pName):m_name(name),m_phone(pName)//相當於Phone m_phone = pName,即隱式轉換法
{
cout << "Person的建構函式呼叫" << endl;
}
再次執行結果:
可以看到,先建立的手機,再建立的人。
即:當其他類的物件作為本類的成員,在構造時先構造其他類物件,再構造本類物件。
同理,析構順序:(可以看出與構造順序相反)