析構函式宣告為私有的作用

2021-04-22 05:46:03 字數 366 閱讀 1907

當我們規定類只能在堆上分配記憶體時,就可以將析構函式宣告為私有的。

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...