如何實現乙個不能被繼承的類

2021-08-15 06:28:11 字數 434 閱讀 7976

首先我們要知道,在c++中,子類的建構函式會呼叫基類的構造進行合成,要想乙個類不被繼承,只要把它的建構函式定義成私有,子類就沒有辦法訪問基類建構函式,從而就阻止了進行子類構造物件

可是問題又來了,你把乙個類的建構函式定義為私有的,那它自己也定義不出物件,這該如何解決。這時我們想到了靜態函式,靜態成員函式沒有this指標,可以通過類直接訪問。

#includeusing namespace std;

class aa

private:

aa(int a=10)

:_a(a)

protected:

int _a;

};class bb :public aa

protected:

int _b;

};int main()

實現乙個不能被繼承的類

分析 普通類都能被繼承,但當這個類的建構函式被宣告為私有時,這個類便不能被繼承,同時也不能在類外面定義該型別的物件,該怎麼解決這個問題呢?方法一 類物件的構造是通過建構函式實現的,如果將建構函式宣告為私有或者保護型別,那麼在類外是不能呼叫建構函式的,也就不能在類定義出物件。對此,我們可以在類裡定義乙...

如何定義乙個不能被繼承的類

方法一 將建構函式宣告為私有的 如果把乙個類的建構函式宣告為私有的,那麼這個類就不能被繼承。但是這也引入了乙個問題,不能在類外定義這個類的物件,所以我們還需要在類內定義乙個靜態的成員函式來返回建立的這個物件。class aa protected aa 方法二 我們可以宣告乙個輔助的類a,把類a這個類...

如何定義乙個不能被繼承的類

用c 設計乙個不能被繼承的類 不能被繼承?不能被繼承?不能被繼承?按照繼承的理論知識分析,我們只要把類的建構函式設定為私有的,即可解決問題。因為那樣的話,子類就沒有辦法訪問基類的建構函式,從而就阻止了進行子類構造物件的任務實現,也就達到了不可繼承的目的。但是,假設那樣,這個類我們在其它地方怎麼使用呢...