在C中如何定義不能被例項化的類 何時定義不需要例項化的類

2021-05-02 04:02:04 字數 1246 閱讀 7754

1樓:匿名使用者

抽象類、密封類

使用 abstract 關鍵字可以建立僅用於繼承用途的類和類成員,即定義派生的非抽象類的功能。使用 sealed 關鍵字可以防止繼承以前標記為 virtual 的類或某些類成員。

可以將類宣告為抽象類。方法是在類定義中將關鍵字 abstract 置於關鍵字 class 的前面。

例如:public abstract class a

抽象類不能例項化。抽象類的用途是提供多個派生類可共享的基類的公共定義。例如,類庫可以定義一個作為其多個函式的引數的抽象類,並要求程式設計師使用該庫通過建立派生類來提供自己的類實現。

抽象類也可以定義抽象方法。方法是將關鍵字 abstract 新增到方法的返回型別的前面。

例如:public abstract class a

抽象方法沒有實現,所以方法定義後面是分號,而不是常規的方法塊。抽象類的派生類必須實現所有抽象方法。當抽象類從基類繼承虛方法時,抽象類可以使用抽象方法重寫該虛方法。

例如:// compile with: /target:library

public class d

}public abstract class e : d

public class f : e

}如果將虛方法宣告為抽象方法,則它對於從抽象類繼承的所有類而言仍然是虛的。繼承抽象方法的類無法訪問該方法的原始實現。在前面的示例中,類 f 上的 dowork 無法呼叫類 d 上的 dowork。

在此情況下,抽象類可以強制派生類為虛方法提供新的方法實現。

密封類和類成員

可以將類宣告為密封類。方法是在類定義中將關鍵字 sealed 置於關鍵字 class 的前面。

例如:public sealed class d

密封類不能用作基類。因此,它也不能是抽象類。密封類主要用於防止派生。由於密封類從不用作基類,所以有些執行時優化可以使對密封類成員的呼叫略快。

在對基類的虛成員進行重寫的派生類上的類成員、方法、欄位、屬性或事件可以將該成員宣告為密封成員。在用於以後的派生類時,這將取消成員的虛效果。方法是在類成員宣告中將 sealed 關鍵字置於 override 關鍵字的前面。

例如:public class d : c}

2樓:匿名使用者

抽像類不能被例項化。

一個般的工具類不需要例項化,此時定義成靜態態。

3樓:匿名使用者

抽象的,密封的類不能被例項化

靜態類不需要例項化

C中如何在類外定義函式C中如何在類别範本外定義函式

目前的大多數 piler還不能解析在類的宣告之外定義的member template。c standard 對於在類定義之外定義member template 的標準寫法如下 不過在vc 6.0下無法編譯通過 template template void a test t1 p include us...

c類成員函式可以定義變數嗎,C中定義的類,成員函式可以直接使用嗎

什麼叫 函式可以定義變數嗎 是在函式裡定義變數還是啥意思?沒有 函式可以定義變數 這種說法 c 中定義的類,成員函式可以直接使用嗎?沒有物件的時候要訪問類成員函式的話,只能訪問靜態成員函式。例如 class a 這樣可以在主函式裡直接用 a abc 這樣的語句進行呼叫。請教一下 c 類中privat...

C 中如何定義派生類?舉例說明

public公有繼承 protected保護繼承 private私有繼承 我們知道類的private和protected成員,在類外是不可以使用的.只有public成員可以在類外直接使用.公有繼承時,基類的private成員派生類也不可用,基類的public和protected成員在派生類中可直接使...