C++之對象的銷毀

  • 生活中對象都是被初始化后才上市的
  • 生活中的對象被銷毀前會做一些工作

問題1 : C++中如何清理需要銷毀的對象?

  • 一般而言,需要銷毀的對象都應(yīng)該做清理
  • 解決方案
    • 為每個類都提供一個public的free函數(shù)
    • 對象不再需要時立即調(diào)用free函數(shù)進行清理
class Test
{
    int* p;
public:
    Test() { p = new int ;};
    void free() {delete p ;};
};
  • 存在的問題

    • free只是一個普通的函數(shù), 必須顯示的調(diào)用
    • 對象銷毀前沒有做清理, 很可能造成資源泄露

問題2: C++編譯器是否能夠自動調(diào)用某個特殊的函數(shù)進行對象的清理?

析構(gòu)函數(shù)

  • C++的類中可以定義一個特殊的清理函數(shù)

    • 這個特殊的清理函數(shù)叫做析構(gòu)函數(shù)
    • 析構(gòu)函數(shù)的功能與構(gòu)造函數(shù)相反
  • 定義 : ~ClassName()

    • 析構(gòu)函數(shù)沒有參數(shù)也沒有返回值類型聲明
    • 析構(gòu)函數(shù)在對象銷毀時自動調(diào)用
  • 析構(gòu)函數(shù)的定義準則

    • 當類中自定義了構(gòu)造函數(shù),并且構(gòu)造函數(shù)中使用了系統(tǒng)資源(如:內(nèi)存申請,文件打開,等)則需要自動以析構(gòu)函數(shù).

小結(jié)

  • 析構(gòu)函數(shù)是對象銷毀時進行清理的特殊函數(shù)
  • 析構(gòu)函數(shù)在對象銷毀時自動被調(diào)用
  • 析構(gòu)函數(shù)是對象釋放系統(tǒng)資源的保障
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,111評論 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,688評論 1 51
  • 1. C++基礎(chǔ)知識點 1.1 有符號類型和無符號類型 當我們賦給無符號類型一個超出它表示范圍的值時,結(jié)果是初始值...
    Mr希靈閱讀 18,171評論 3 82
  • 語言之虛與實語言的空虛、主動、生動與能力 巧言令色與木訥寡言都是偏頗
    咸叔說閱讀 353評論 0 1
  • 人,可能是這個世界上唯一會思考生命意義的生物,之所以說可能,是因為人類對世界的認識始終是有限的。這個世界充...
    白言_420f閱讀 423評論 6 4

友情鏈接更多精彩內(nèi)容