C 中的多型

2022-08-22 05:21:10 字數 1158 閱讀 1780

一、多型的概念

面對物件的四個特性分別為抽象、封裝、繼承、多型。而多型的概念就是:如果子類中的成員函式對父類中的成員進行了覆蓋,當乙個指向子類的父類指標或引用了子類的父類引用,當使用它呼叫虛函式,然後根據實際的呼叫物件呼叫子類中的覆蓋函式,而不是父類中的虛函式,這種語法現象叫多型。

二、多型的作用

同一種類發出同一種呼叫,而產生不同的反映,也就是說,不論傳遞過來的究竟是那個類的物件,函式都能夠通過同乙個介面呼叫到適應各自物件的實現方法。主要目的也就是為了介面重用。

三、構成多型的條件

1、多型特性除了父子類之間要構成覆蓋,還必須是父類以指標或引用的方式來指向子類。

2、當指標或引用已經構成多型時,此時呼叫成員所傳的this指標再呼叫成員函式時也可以構造多型。

3、在子類的建構函式執行前會先呼叫父類的建構函式,如果呼叫了被覆蓋的虛函式,由於子類還沒有被構造完成,因此只能是呼叫父類中的虛函式。

建構函式在進入函式體執行時,類中看得見的資源已經全部構造完成。

4、在子類的析構函式執行完成後會再呼叫父類的析構函式,如果呼叫被覆蓋的虛函式,由於子類已經析構完成,已經不能算是完整的子類了,因此只能呼叫父類中的虛函式。

四、c++中的虛函式

成員函式在定義時新增了 virtual 這個關鍵字的函式就是虛函式。

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

成員函式中有純虛函式的叫抽象類,這種類不能建立物件。

所有的成員函式都是純虛函式,這種類叫純抽象類。

純抽象類可以是類封裝的乙個過程,同時抽象類也可以當作乙個統一的介面類。

C 中的多型

封裝 繼承 多型,物件導向的三大特性,前兩項理解相對容易,但要理解多型,特別是深入的了解,對於初學者而言可能就會有一定困難了。我一直認為學習oo的最好方法就是結合實踐,封裝 繼承在實際工作中的應用隨處可見,但多型呢?也許未必,可能不經意間用到也不會把它跟 多型 這個詞對應起來。在此拋磚引玉,大家討論...

C 中的多型

c 中的多型分為靜多型和動多型 也就是靜態繫結和動態繫結兩種現象 靜動的區別主要在於這種繫結發生在編譯期還是執行期,發生在編譯期的是靜態繫結,也就是靜多型 發生在執行期的則是動態繫結,也就是動多型。一 靜多型可以通過模板和函式過載來實現,下面舉兩個例子 1 函式模板 template t max c...

C 中的多型

定義 同樣的訊息被不同型別的物件接收時產生不同的行為。原理 1.編譯時多型 靜態繫結 2.執行時多型 動態繫結 分類 1.過載 包括函式過載,運算子過載 靜態繫結 2.覆蓋 包括子類和父類間虛函式 虛析構函式和純虛函式 動態繫結 要求 1.函式名相同 2.引數不同 栗子 include using ...