C/C++編程筆記:私有化析構(gòu)函數(shù),示例分析

首先我們來看一下下面這個程序的輸出:
上面的程序可以編譯并正常運行。因此,我們可以說:不是創(chuàng)建私有析構(gòu)函數(shù)編譯器錯誤。
現(xiàn)在,您對下面的程序怎么說?
上面的程序編譯失敗。編譯器注意到,因為析構(gòu)函數(shù)是私有的,所以無法破壞局部變量“ t”。
現(xiàn)在,下面的程序呢?
上面的程序工作正常。沒有正在構(gòu)造的對象,程序僅創(chuàng)建“ Test *”類型的指針,因此不會破壞任何內(nèi)容。
接下來,下面的程序呢?
上面的程序也可以正常工作。當使用動態(tài)內(nèi)存分配創(chuàng)建某些內(nèi)容時,程序員有責任將其刪除。因此,編譯器不會打擾。
在將析構(gòu)函數(shù)聲明為私有的情況下,也可以使用malloc()函數(shù)創(chuàng)建該類的實例。在下面的程序中實現(xiàn)相同。
但是,以下程序編譯失敗。當我們調(diào)用delete時,將調(diào)用析構(gòu)函數(shù)。
我們在上面的程序中注意到,當一個類具有私有析構(gòu)函數(shù)時,只能創(chuàng)建該類的動態(tài)對象。以下是一種使用私有析構(gòu)函數(shù)創(chuàng)建類并具有作為類朋友的功能的方法。該功能只能刪除對象。
私有析構(gòu)函數(shù)的用途是什么?
每當我們想要控制類對象的銷毀時,我們都將析構(gòu)函數(shù)設(shè)為私有。對于動態(tài)創(chuàng)建的對象,可能會發(fā)生以下情況:將指向該對象的指針傳遞給函數(shù),然后該函數(shù)刪除該對象。如果在函數(shù)調(diào)用后引用了對象,則該引用將變得懸而未決。
以上就是今天的全部內(nèi)容了。每日分享小知識,希望對你有幫助~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號:C語言編程學習基地
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
