版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
當我們規定類只能在堆上分配內存時,就可以將析構函數聲明爲私有的。
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】