C abstract和virtual關鍵字

2021-08-29 02:11:21 字數 750 閱讀 7636

abstract:

顧名思義表示抽象,可以形容方法和類等。為什麼要使用抽象類,個人理解,在設計乙個父類時,會提供一些共同的方法,而繼承的不同子類往往會有一些自己獨特的方法,而這些方法在父類中沒辦法去統一,也沒必要去實現,所以只做方法宣告而不去實現,表示為抽象函式,用於子類去實現。

1.抽象方法時沒有實現的,

2.擁有抽象方法的類必須修飾乙個abstract的關鍵字從而變成乙個抽象類;但是反過來,抽象類裡面不一定要有抽象方法,比如寫了乙個非抽象類,但是這個類並不希望被人直接例項化,而是只能繼承,我們可以把這個類變成乙個抽象類(雖然這個類裡面並沒有抽象方法)。

3.抽象類不能被例項化,只能被繼承,

4.抽象類的子類必須實現每個抽象方法,

5.抽象類裡面除了可以有抽象方法以外,也可以有普通的方法,

6.抽象類的建構函式可以省略,編譯器會自動加上,但是不能是乙個抽象方法,而只能是乙個普通的建構函式。

7.子類繼承抽象父類後,可以使用override關鍵字覆蓋父類中的抽象方法,並做具體的實現。也可以不實現抽象方法,留給後代實現,這是子類仍舊是乙個抽象類,必須宣告為abstract。

virtual:

1.virtual和virtual關鍵是在執行的時候,而不是在編譯的時候。如果方法不是virtual,編譯器就使用申明的類對應的型別也就是說不是virtual的,編譯時就定了。

2.如果方法是virtual,然後子類使用了override,編譯器就產生**。然後在執行的時候,進行檢測,看物件屬於那個類,然後呼叫這個類的方法。

SystemVerilog中的Virtual總結

virtual inte ce 隔離抽象模型 class 和實際訊號 port wire reg 可在 過程中動態控制連線訊號。在class內使用,這樣class的不同例項可連外部不同的inte ce例項。inte ce sbus a bus inte ce logic req,grant logi...

手把手教你整合滴滴的外掛程式化框架virtualapk

首先是virtualapk的官方demo 然後,開始整合,咱們一步一步來。第二步 修改編譯環境,virtualapk對編譯環境有很大的限制,我使用的編譯環境是 第三步 建立乙個外掛程式。選擇new module 選擇phone tablet module 然後就和建立專案一樣了,建議是不要把主類的名...

條款7 為多型基類析構函式宣告為virtual

基類指標指向子類物件。子類物件必須位於堆。因此為了避免洩漏記憶體資源,當指標不使用時,delete掉每乙個物件非常重要。但是如果基類的析構函式不宣告為virtual。那麼指向子類物件的指標delete時,析構掉的成分都是基類的,而子類的成分沒有被識別出來,而未被析構掉。這樣就造成資源浪費。給基類析構...