我自己總結的如何呼叫抽象類內的函式介面

2021-10-08 04:02:45 字數 671 閱讀 1903

第一:通過類的指標無論是子類還是父類都可以呼叫抽象類內的正常函式介面,注意只能呼叫正常的,如果是虛函式介面是不可以呼叫的,下面是程式例子:

像如圖上所示當用指標訪問抽象父類的正常函式的時候,程式是沒有問題的。當這個函式我寫成虛函式以後:

所以說無法通過指標呼叫抽象類內的虛函式,會出現這個訪問衝突問題。

第二:可以通過子類來呼叫父類的函式介面,當然子類必須對父類的純虛函式進行了定義來確保子類不是抽象類,要注意一點子類對父類的定義必須完全按照父類純虛函式的返回值跟形參進行定義,否則子類仍然會被認為是抽象類,那個純虛函式的定義會被認為是普通的函式過載,下面是程式示例:

可以看到當子類不再是抽象類的時候,給子類例項化然後利用子類物件去呼叫抽象類內的哪怕是虛函式都不會出現問題,這個方法也是c++官方給出的方法。

最後我再說一下,抽象類盡量不要直接用,哪怕是第一種指標的方法也盡量不要用,還是盡量用第二種方法去呼叫抽象類中的函式介面才最為穩妥。

我的筆記 抽象類

abstract 是乙個修飾符可以修飾方法 類 1當我們多個類存在相同的功能,但是功能的主體不同,這是我們向上抽取的時只抽取功能的定義不抽取功能的主體 抽象類的特點 1.抽象方法一定要在抽象類中 2.抽象類和抽象方法必須要被abstract關鍵字修飾 3.抽象的類是不能被建立物件的,因為呼叫抽象的方...

抽象類的特點總結

抽象類的特點總結 c 允許把類和函式宣告為 abstract 抽象類不能例項化,抽象類可以包含普通函式和抽象函式,抽象函式就是只有函式定義,沒有函式體。顯然抽象函式本身也是虛擬的 virtual 只有函式定義,沒有函式體實現 類是乙個模板,那麼抽象類就是乙個不完整的模板,我們不能使用乙個不完整的模板...

C 抽象類的呼叫機制

using system using system.collections.generic using system.text namespace test a public abstract void show class subclass base b public override void ...