析構函數聲明爲私有的作用

當我們規定類只能在堆上分配內存時,就可以將析構函數聲明爲私有的。

class alloc

{

public:

    alloc():

private:

   ~alloc();

};

 

如果在棧上分配空間,類在離開作用域時會調用析構函數釋放空間,此時無法調用私有的析構函數。

如果在堆上分配空間,只有在delete時纔會調用析構函數。

 

可以添加一個destroy()函數來釋放,從而解決不能在析構函數中添加delete的問題。

class alloc

{

public:

    alloc():

 destroy(){ delete this;}  

private:

   ~alloc();

};



此文章源自於【http://blog.csdn.net/jia_xiaoxin/article/details/3348045】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章