有時候我們並不希望自己寫的類被繼承,怎麼做呢?
方法很簡單,只需要在定義類時加上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...