多型中型別相容性原則遇上函式重寫

2021-09-19 11:10:58 字數 838 閱讀 2579

/*多型:

多型的工程意義:

物件導向三大概念,三種境界(封裝,繼承,多型)

多型成立條件:

總結條件,看**的時候要看出多型。

1:問題拋轉,如果父類的函式名和子類的函式名重複了會發生什麼? */

#include

using namespace std;

class parent

void howtoprint2(parent &base3)

int main()

//函式呼叫 

howtoprint(&p1);

howtoprint(&c1);

howtoprint2(p1);

howtoprint2(c1);

}//用以上無論是呼叫還是指標還是引用都不能呼叫子類的print函式。輸出的都是父類的資料。 

/*2:物件導向新需求 

編譯器的做法不是我們所希望的。

根據實際的物件型別來判斷重寫函式的呼叫。

如果父類指標指向的是父類物件則呼叫父類中的定義的函式。

如果父類指標指向的是子類物件則呼叫子類中的定義的函式。 

我們希望根據實際的物件型別決定函式呼叫語句的具體呼叫目標。 

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

3:解決方案

c++中的多型支援

c++中通過virtual關鍵字對多型進行支援。

使用virtual宣告的函式被重寫後即可展開多型性。 

在這個例子中只需要在父類中的void print函式前面加上virtual關鍵字即可,子類的可寫可不寫,一般都寫上,比較醒目。

這就是c++給我們提供的多型的乙個功能。*/

型別相容性原則

傳智掃地僧課程學習筆記。賦值相容性原則 1 1 基類指標 引用 指向 子類物件 parent p null p c1 p printp 1 2 指標做函式引數 howtoprint p1 howtoprint c1 1 3引用做函式引數 howtoprint2 p1 howtoprint2 c1 第...

C 型別相容性原則

型別相容規則是指在需要基類物件的任何地方,都可以使用公有派生類的物件來替代。通過公有繼承,派生類得到了基類中除建構函式 析構函式之外的所有成員。這樣,公有派生類實際就具備了基類的所有功能,凡是基類能解決的問題,公有派生類都可以解決。型別相容規則所指的替代包括以下情況 1.子類物件可以當作父類物件使用...

c 型別相容性原則

內容源自 傳智播客 型別相容性規則是指在需要基類物件的任何地方,都可以使用公有派生類的物件來替代。通過公有繼承,派生類得到了基類中除建構函式 析構函式之外的所有成員。這樣,公有派生類實際就具備了基類的所有功能,凡是基類能夠解決的問題,公有派生類都可以解決。型別相容性原則包含下面幾種情況 1.子類物件...