把析構函數定義爲私有成員可以保證只能在堆上new一個新的類對象.
下面寫一個簡單的例子驗證一下:
寫一個簡單的類,把它的析構函數變成私有的.
new一個新的類對象,編譯通過,如下圖.
把原來的代碼改動一下,直接在棧上創建對象.
如下圖所示,編譯不通過.
在棧上生成對象時,對象會自動析構,也就說析構函數必須可以訪問。所以如果析構函數私有,則會報錯.
把析構函數定義爲私有成員可以保證只能在堆上new一個新的類對象.
下面寫一個簡單的例子驗證一下:
寫一個簡單的類,把它的析構函數變成私有的.
new一個新的類對象,編譯通過,如下圖.
把原來的代碼改動一下,直接在棧上創建對象.
如下圖所示,編譯不通過.
在棧上生成對象時,對象會自動析構,也就說析構函數必須可以訪問。所以如果析構函數私有,則會報錯.