C 中的多型

2021-09-25 02:54:37 字數 1626 閱讀 7466

1.2.1. 過載多型:

class c 

;

1.2.2. 子型別多型:不同的物件呼叫同名重定義函式,表現出不同的行為

在程式編譯時(compile-time)確定呼叫哪個函式

例:函式過載

在程式執行時(run-time),才能夠確定呼叫哪個函式

用動態聯編實現的多型,也稱為執行時多型(run-time polymorphism)。

print()呼叫tostring()輸出資訊,需要分別寫三個過載函式,才能實現多型輸出

void print( a obj );

void print( b obj );

void print( c obj );

#include #include using std::cout;

using std::endl;

class a

};class b:public a

};class c:public b

};print(a a)//以基類物件為引數

實現執行時多型**如下:

#include #include using std::cout;

using std::endl;

class a

};class b:public a

};class c:public b

};print(a* obj)//以基類物件為引數

}; //父類

class c: public p }; //子類

main ()

說明: 物件是什麼型別,就調什麼型別  

class p            }; //父類

class c: public p }; //子類

main ()

說明: 指標是什麼型別,就調什麼類

class p            }; //父類

class c: public p }; //子類,f自動virtual

main ()

說明: 函式虛,不看指標看真物件

class p            }; //父類

class c: public p }; //子類,f自動virtual

main ()

說明: 函式虛,不看引用看真物件

C 中的多型

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

C 中的多型

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

C 中的多型

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