從匯編看c++的默認(rèn)析構(gòu)函數(shù)的使用詳解
c++中,如果沒(méi)有為一個(gè)類提供析構(gòu)函數(shù),那么編譯器會(huì)為這個(gè)類提供默認(rèn)的析構(gòu)的函數(shù)。由于析構(gòu)函數(shù)的功能和構(gòu)造函數(shù)相反,因此和默認(rèn)的構(gòu)造函數(shù)類似,編譯器也會(huì)提供無(wú)用的默認(rèn)的析構(gòu)函數(shù),和非無(wú)用的析構(gòu)函數(shù)。兩者的分析情況一樣(對(duì)于默認(rèn)的構(gòu)造函數(shù)分析,請(qǐng)參看《從匯編看c++中默認(rèn)構(gòu)造函數(shù)的使用分析》)。并且編譯器會(huì)提供非無(wú)用的默認(rèn)析構(gòu)函數(shù)情形和默認(rèn)構(gòu)造函數(shù)類似:
1 類含有虛成員函數(shù)(類繼承自虛基類或者繼承的基類含有虛成員函數(shù),也屬于這種情況)
2 類繼承自一個(gè)基類,基類含有自定義析構(gòu)函數(shù)(如果基類沒(méi)有自定義析構(gòu)函數(shù),但是編譯器會(huì)為它提供一個(gè)非無(wú)用的默認(rèn)析構(gòu)函數(shù),也屬于這種情況。這就是說(shuō),只要基類含有一個(gè)析構(gòu)函數(shù),不管這個(gè)析構(gòu)函數(shù)是自定義的,還是編譯器提供的非無(wú)用的默認(rèn)析構(gòu)函數(shù),都行)
3 類包含一個(gè)成員對(duì)象,該成員對(duì)象自定義析構(gòu)函數(shù)(如果成員對(duì)象沒(méi)有自定義析構(gòu)函數(shù),但是編譯器會(huì)為它提供一個(gè)非無(wú)用的默認(rèn)析構(gòu)函數(shù),也屬于這種情況。這就是說(shuō),只要成員變量含有一個(gè)析構(gòu)函數(shù),不管這個(gè)析構(gòu)函數(shù)是自定義的,還是編譯器提供的非無(wú)用的默認(rèn)析構(gòu)函數(shù),都行).
并且,對(duì)于編譯器提供的默認(rèn)析構(gòu)函數(shù),不管是無(wú)用的,還是非無(wú)用的,它們都不會(huì)自動(dòng)清除對(duì)象里面所包含的資源。
相關(guān)文章
C++編寫實(shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++編寫實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C語(yǔ)言字符串與字符數(shù)組面試題中最易錯(cuò)考點(diǎn)詳解
這篇文章主要介紹了C語(yǔ)言字符串與字符數(shù)組面試題中最易錯(cuò)考點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
利用Qt實(shí)現(xiàn)可擴(kuò)展對(duì)話框的示例代碼
可擴(kuò)展對(duì)話框通常用于用戶對(duì)界面有不同要求的場(chǎng)合。當(dāng)供高級(jí)用戶使用或需要更多信息時(shí),可通過(guò)某種方式的切換顯示完整對(duì)話窗體(擴(kuò)展窗體)。本文將用Qt實(shí)現(xiàn)可擴(kuò)展對(duì)話框,需要的可以參考一下2022-06-06
C++中rapidjson組裝繼續(xù)簡(jiǎn)化的方法
今天小編就為大家分享一篇關(guān)于C++中rapidjson組裝繼續(xù)簡(jiǎn)化的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04

