多型性 虛函式 抽象類

2021-06-15 22:11:47 字數 968 閱讀 2239

一、多型性

指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。c++支援兩種多型性:編譯時多型性,執行時多型性。

1.編譯時多型性:通過過載函式實現;

2.執行時多型性:通過虛函式實現。

二、虛函式

虛函式是在基類中被宣告為virtual,並在派生類中重新定義的成員函式。可實現成員函式的動態過載。

三、純虛函式

純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式

的方法是在函式原型後加「=0」。如:

class parent

virtual void function()=0;//純虛函式

1、為了方便使用多型特性,我們常常需要在基類中定義虛函式。

2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。

為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以過載以實現多型性。同時含有純虛函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。

四、抽象類

包含純虛函式的類稱為抽象類。由於抽象類包含了沒有定義的純虛函式,所以不能定義抽象類的物件。

基類:class a 

;主函式:

int main(int argc, char* argv)

f1()是乙個普通的過載.

呼叫m_j->f1();會去呼叫a類中的f1(),它是在我們寫好**的時候就會定好的.

也就是根據它是由a類定義的,這樣就呼叫這個類的函式.

f2()是虛函式.

呼叫m_j->f2();會呼叫m_j中到底儲存的物件中,對應的這個函式.這是由於new的b

物件.f3()與f2()一樣,只是在基類中不需要寫函式現實.

C 多型性 (多型性)虛方法 抽象類

多型性 虛方法 1 在父類的方法中加入virtual,這個方法可以被子類重新寫一遍。在子類的方法前加入override 多型就是指不同的物件收到相同的訊息,會產生不同的行為,同乙個類在不同的場合下表現出不同的行為特徵 多型的作用 把不同的子類都看作是父類,可以遮蔽到不同子類物件之間的差異,寫出通用的...

虛方法,抽象類,多型性

code 1.虛方法必須有實現部分,抽象方法沒有提供實現部分,抽象方法是一種強制派生類覆蓋的方法,否則派生類將不能被例項化。如 抽象方法 public abstract class animal 虛方法 public class animal public virtual void eat 2 抽象...

C 虛函式,多型性,純虛函式,抽象類

一 虛函式 1.用virtual關鍵字宣告的函式叫虛函式 虛函式標明在基類宣告的虛函式是虛擬的,並不是實際存在的函式,在派生類中才會正式定義此函式 虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式 eg class a class b p...