用C 設計乙個不能被繼承的類

2021-08-04 22:26:15 字數 478 閱讀 1764

一,把建構函式設為私有函式

在c++中子類的建構函式會自動呼叫父類的建構函式,子類的析構函式會自動呼叫父類的析構函式。要想定義乙個不能被繼承的類,我們只要把它的建構函式和析構函式都定義為私有函式。那麼當乙個類試圖從他那繼承的時候,必然會由於呼叫建構函式、析構函式而導致編譯錯誤。

這個類的建構函式是私有的,那麼我們應當如何才能獲得到該型別的例項呢?

我們可以通過定義公有的靜態函式來建立和釋放類的例項。

下面是具體的**:

class myclass

~myclass(){}

public:

static myclass *getinstance()

static void deleteinstance(myclass *p)

};

用C 設計乙個不能被繼承的類

如果將乙個類設計成不能被繼承來的類,只要把類的建構函式設定為私有的,即可解決問題。因為那樣的話,子類就沒有辦法訪問基類的建構函式,從而就阻止了進行子類構造物件的任務實現,也就達到了不可繼承的目的。因為構造方法為私有,所以外部也不能呼叫建構函式生成例項,我們需要提供特殊的方法建立例項。具體做法是定義靜...

用C 設計乙個不能被繼承的類

在 c 中,子類的建構函式會自己主動呼叫父類的建構函式。相同,子類的析構函式也會自己主動呼叫父類的析構函式。要想乙個類不能被繼承,我們僅僅要把它的建構函式和析構函式都定義為私有函式。那麼當乙個類試圖從它那繼承的時候,必定會因為試圖呼叫建構函式 析構函式而導致編譯錯誤。template class a...

設計乙個不能被繼承的類

分類 cpp 2012 02 19 20 33 1390人閱讀收藏 舉報destructor constructor function class 編譯器c 在c 中每個類都乙個建構函式和乙個析構函式,即使使用者不明確定義,系統也會類定義乙個預設的建構函式和析構函式。當建立該類的物件可以顯示或者隱式...