派生类构造函数和析构函数的执行顺序
生活随笔
收集整理的這篇文章主要介紹了
派生类构造函数和析构函数的执行顺序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
派生類繼承了基類的成員,實現(xiàn)了代碼的重復(fù)利用,但基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被繼承。如果在派生類中需要對新增加的成員進(jìn)行初始化,則需要加入派生類的構(gòu)造函數(shù)。同樣派生類也需要添加析構(gòu)函數(shù)來實現(xiàn)一些結(jié)束工作。 當(dāng)創(chuàng)建對象時,編譯系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。當(dāng)撤銷對象時,編譯系統(tǒng)會自動調(diào)用析構(gòu)函數(shù)。當(dāng)創(chuàng)建派生類的對象時,首先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行派生類的構(gòu)造函數(shù)。當(dāng)撤銷對象時,則先執(zhí)行派生類的析構(gòu)函數(shù),然后再執(zhí)行基類的析構(gòu)函數(shù)。 例子: #include"iostream.h"???? class A?????//定義一個類???? {???? public: A()????????//類的構(gòu)造函數(shù)???????????? { cout<<"基類的構(gòu)造函數(shù)"<<endl; }???????????? ~A()?????//類的析構(gòu)函數(shù)???????????? { cout<<"基類的析構(gòu)函數(shù)"<<endl; }???? };???? class B:public A????//派生類???? {???? public:???????????? B()????????????????????//派生類的構(gòu)造函數(shù)???????????? { cout<<"派生類的構(gòu)造函數(shù)"<<endl; }???????????? ~B()?????????????????//派生類的析構(gòu)函數(shù)???????????? { cout<<"派生類的析構(gòu)函數(shù)"<<endl; }? };? void main()? { B p;????????????????//派生類的對象???? } 輸出: 基類的構(gòu)造函數(shù) 派生類的構(gòu)造函數(shù) 派生類的析構(gòu)函數(shù) 基類的析構(gòu)函數(shù)當(dāng)類內(nèi)包含其他對象時,將這個類對象叫做內(nèi)含類對象,該對象的初始化工作必須放在構(gòu)造函數(shù)的初始化列表中,內(nèi)含類對象和包含它的類對象的構(gòu)造函數(shù)順序是:先是內(nèi)含類的構(gòu)造函數(shù),然后是外部類的構(gòu)造函數(shù)。
轉(zhuǎn)載于:https://blog.51cto.com/luisliu/226618
總結(jié)
以上是生活随笔為你收集整理的派生类构造函数和析构函数的执行顺序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: documentum中的Fulltext
- 下一篇: 冬天了,麦克风/话筒 有杂音 的原因!