多型與繼承(上)

2021-06-20 10:53:05 字數 1014 閱讀 4765

函式重寫:

在子類中定義與父類中原型相同的函式;

函式重寫只發生在父類與子類之間;

class parent//函式重寫

c++與

c相同,是靜態編譯型語言;

在編譯時,編譯器自動根據指標的型別判斷指向的是乙個什麼樣的物件;

所以編譯器認為父類指標指向的是父類物件(根據賦值相容性原則,這個假設合理);

由於程式沒有執行,所以不可能知道父類指標指向的具體是父類物件還是子類物件;

從程式安全的角度,編譯器假設父類指標只指向父類物件,因此編譯的結果為呼叫父類的成員函式;

物件導向中的多型:

根據實際的物件型別決定函式呼叫語句的具體呼叫目標;

多型:同樣的呼叫語句有多種不同的表現形態;

c++中通過virtual

關鍵字對多型進行支援;

#include

#include

using namespace std;

class boss//單例模式

public:

static boss* getinstance()

return cinstance;

}int fight()

{cout<

int b = boss->fight();

if( k < b )

{cout<

函式重寫是物件導向中很可能發生的情形

函式重寫只可能發生在父類與子類之間

需要根據實際物件的型別確定呼叫的具體函式

virtual關鍵字是c++中支援多型的唯一方式

被重寫的虛函式即可表現出多型的特性

11 多型與繼承(上)

在子類中定義與父類中原型同樣的函式 函式重寫僅僅發生在父類與子類之間 問題所在 1 c 與c同樣,是靜態編譯型語言 2 在編譯時,編譯器自己主動依據指標的型別推斷指向的是乙個什麼樣的物件 3 所以編譯器覺得父類指標指向的是父類物件 4 因為程式沒有執行。所以不可能知道父類指標指向的詳細是父類物件還是...

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...