c c 中如何讓指定類不能被繼承?

2021-09-10 01:46:08 字數 862 閱讀 9134

有時候我們並不希望自己寫的類被繼承,怎麼做呢?

方法很簡單,只需要在定義類時加上sealed關鍵字,用 sealed 關鍵字宣告的類也叫密封類,如下**

public

sealed

class

room

強制派生會有什麼錯誤呢?如下截圖

room 被定義為密封類,因此現在已經無法從 room 類派生。

如果只是想阻止基類中的虛成員被覆寫,並不打算阻止整個類被繼承,其實方法與密封類相同,在定義虛成員時加上 sealed 關鍵字即可,如下**所示

public

class

car}

public

class

mycar

:car

}

car 類中定義了虛方法 run , mycar 類繼承 car 類,並覆寫 run 方法,同時使用 sealed 關鍵字,使得再繼承 mycar 類的子類,不能再覆寫 run 方法。

這裡我寫乙個 othercar 類並繼承 mycar 類,然後強制覆寫 run 方法,會如何呢?如下截圖所示

注:這裡我將成員宣告為 protected ,只允許當前類和派生類訪問,其它外部物件無法訪問。

如何讓類不能被繼承

方法一 借助 final 關鍵字,用該關鍵字修飾的類不能被繼承。include using namespace std class base final class derive public base int main 解決方法二 借助友元 虛繼承和私有建構函式來實現 include using ...

不能被繼承的類

不能被繼承的類,就是子類在呼叫父類的建構函式的時候失敗就沒法被整合了,所以可以把析構函式定義為private,因為在呼叫建構函式的時候,會先檢查析構函式,如果析構是private的,那麼建構函式也沒法被呼叫。這個問題和另一篇文章類似我們通過設定共有的static函式來構造和析構。class a a ...

不能被繼承的類

題目 用c 設計乙個不能被繼承的類。分析 乙個類被繼承後,在生成派生類物件時,派生類會主動呼叫父類的建構函式,所以如果父類的建構函式被設定成私有時,派生類的物件就無法構建。一 直接將建構函式設為私有函式 class sealedclass static void deleteinstance sea...