課程
/后端開發(fā)
/C++
/C++遠征之封裝篇(下)
為什么實例化對象A時,如果對象A有對象成員B,那么先執(zhí)行對象A的構(gòu)造函數(shù),再執(zhí)行B的構(gòu)造函數(shù)。這句話錯了?
2016-01-01
源自:C++遠征之封裝篇(下) 2-8
正在回答
銷毀的時候不是應該先銷毀B,再銷毀A嗎?為什么C是對的?
Allisam
因為A包含了對象B,也就是說要想“建造”A,必須先有B作為基礎(chǔ),所以,當對象B是對象A的一個數(shù)據(jù)成員時,先構(gòu)造B,再構(gòu)造A。可以利用代碼簡單跟蹤一下:
class?Member { public: ?Member() ?{ ??????std::cout?<<?"Member's?constructor"?<<?std::endl; ?} private: ?????int?m_iA; }; class?Combination { pubilc: ????Combination() ????{ ????????std::cout?<<?"Combination's?constructor"?<<?std::endl; ????} private: ????Member?m_mMem;???? } int?main() { ????Combination?c; ????return?0; }
類A中有 類B類型的成員對象,那么實例化A時,會先實例化B,即調(diào)用B的構(gòu)造函數(shù),再調(diào)用A的構(gòu)造函數(shù)。
舉報
封裝--面向?qū)ο笕筇卣髦?,通過案例讓C++所學知識融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-09-05
銷毀的時候不是應該先銷毀B,再銷毀A嗎?為什么C是對的?
2016-01-01
因為A包含了對象B,也就是說要想“建造”A,必須先有B作為基礎(chǔ),所以,當對象B是對象A的一個數(shù)據(jù)成員時,先構(gòu)造B,再構(gòu)造A。可以利用代碼簡單跟蹤一下:
2016-01-01
類A中有 類B類型的成員對象,那么實例化A時,會先實例化B,即調(diào)用B的構(gòu)造函數(shù),再調(diào)用A的構(gòu)造函數(shù)。