第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

關(guān)于虛析構(gòu)函數(shù)

若父類未聲明虛析構(gòu)函數(shù),這時候

父類 obj=new 子類()

delete obj//調(diào)用父類的析構(gòu),這里是找到子類的虛函數(shù)指針然后找到對應(yīng)的虛函數(shù)表里面父類的析構(gòu)么?


若父類聲明了虛析構(gòu),這時候

父類 obj=new 子類()

delete obj//調(diào)用子類的析構(gòu),這里是可以理解找到子類的徐函數(shù)指針,再找到虛函數(shù)表,在偏移到對應(yīng)的虛析構(gòu)


但是反過來理解不了第一條,求解答。



正在回答

1 回答

首先有個前提,就是如果析構(gòu)函數(shù)聲明為虛函數(shù),可以依次執(zhí)行子類和父類的析構(gòu)函數(shù)(這個前提好像沒有看到解釋,就當(dāng)做定理吧)


若父類未聲明虛析構(gòu)函數(shù),這時候

父類 *obj=new 子類()

delete obj;

你這里生成的是父類的指針,你在delete父類這個指針的時候當(dāng)然是只會調(diào)用父類的析構(gòu)函數(shù),肯定無法調(diào)用到子類的析構(gòu)函數(shù)啦,因為此時根本就沒有提到子類對象。但是按照上面的前提,當(dāng)你聲明析構(gòu)函數(shù)為虛函數(shù)的時候,如果子類構(gòu)造函數(shù)中申請了內(nèi)存,就可以先調(diào)用子類析構(gòu)函數(shù),把這部分內(nèi)存釋放掉

若父類聲明了虛析構(gòu),這時候

父類 *obj=new 子類()

delete obj;

同理,這里也是刪除父類指針,調(diào)用的是父類的析構(gòu)函數(shù),但是因為你聲明了虛析構(gòu)函數(shù),就會先調(diào)用子類再調(diào)用父類

子類的虛函數(shù)表里面怎么會有父類析構(gòu)函數(shù)呢,就只會有子類的析構(gòu)函數(shù),除非子類沒有重寫虛析構(gòu)函數(shù),才會沿用父類的虛析構(gòu)函數(shù)。但是這些跟你問的內(nèi)容沒有關(guān)系。原因是上面幾行,跟虛函數(shù)指針關(guān)系不大。



0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
C++遠(yuǎn)征之多態(tài)篇
  • 參與學(xué)習(xí)       66225    人
  • 解答問題       329    個

本教程將帶領(lǐng)大家體會面向?qū)ο笕筇匦灾械亩鄳B(tài)特性

進(jìn)入課程

關(guān)于虛析構(gòu)函數(shù)

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號