當我們規定類只能在堆上分配記憶體時,就可以將析構函式宣告為私有的。
class alloc
public:
alloc():
private:
~alloc();
如果在棧上分配空間,類在離開作用域時會呼叫析構函式釋放空間,此時無法呼叫私有的析構函式。
如果在堆上分配空間,只有在delete時才會呼叫析構函式。
可以新增乙個destroy()函式來釋放,從而解決不能在析構函式中新增delete的問題。
class alloc
public:
alloc():
destroy()
private:
~alloc();
析構函式宣告為私有的作用
當我們規定類只能在堆上分配記憶體時,就可以將析構函式宣告為私有的。class alloc 如果在棧上分配空間,類在離開作用域時會呼叫析構函式釋放空間,此時無法呼叫私有的析構函式。如果在堆上分配空間,只有在delete時才會呼叫析構函式。可以新增乙個destroy 函式來釋放,從而解決不能在析構函式中...
何時將析構函式宣告為私有?
參考 當我們將析構函式宣告為私有時,就意味著析構函式只能在類域中被呼叫,無法被外界 包括自己的物件 呼叫。表現為 1.禁止使用者對此型別的變數進行定義,即禁止在棧記憶體空間內建立此型別的物件。要建立物件,只能用 new 在堆上進行。2.禁止使用者在程式中使用 delete 刪除此型別物件。物件的刪除...
析構函式宣告為虛函式
base pb inherit c inherit 是繼承 base的 pb c delete pb 時需要呼叫物件的析構函式,如果基類析構不是virtual型,會根據pb的定義型別呼叫相應類的析構函式,即呼叫即類析構,但如果你在派生類析構裡有記憶體釋放操作,那就會發生記憶體洩漏。假如基類析構是vi...