C 中的多型

2021-09-27 12:20:13 字數 937 閱讀 2093

1.下面的**,可以幫助大家理解c++的多型。

#include using namespace std;

// 只要類中有乙個純虛函式,那麼a就是乙個抽象類

class a

;class dog:public a

int main()

2.**多型的深層次原因

#include using namespace std;

class base

執行之後虛表的結構:

{ cout << "base::f"從上面的**證明了虛表的存在,我們可以分別取出在虛表中的函式,並執行這些函式。

上圖可以看出來pfun指的是虛表中儲存的第乙個函式。單步除錯往下執行,可以分別取出虛表中的函式。

#includeusing namespace std;

class base

{public:

base()

{ cout<

#includeusing namespace std;

class base1

{ public:

virtual void f()

{ cout << "base::f"多繼承的時候,子類中重寫的方法會覆蓋父類虛表中的方法,三個虛表每個都要覆蓋。沒有重寫的會跟在虛表的後面。

C 中的多型

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

C 中的多型

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

C 中的多型

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