函式過載 重寫 重定義的對比

2021-09-11 08:09:11 字數 1323 閱讀 7474

過載

函式過載是指在乙個類中宣告了多個名稱相同但引數列表不同的函式,這些引數可能個數、順序、型別不同,不能靠返回值型別來判斷。

特徵:

函式重寫(也稱覆蓋)

函式過載是指子類重新定義基類的虛函式。

特徵:

重定義(又稱隱藏)

特徵:例:

#include

using

namespace std;

class

base

;// 若有virtual關鍵字,即為虛函式。由物件的型別決定呼叫哪個函式(多型,函式重寫override)。

virtual

voidb(

)/* 2.子類和父類返回值引數不同,函式名相同,有/無virtual關鍵字 */

// 若無virtual關鍵字,父類的同名成員被隱藏。

voidd(

int x)

// 若有virtual關鍵字,父類的同名成員同樣被隱藏。

virtual

voide(

int x)

/* 3.子類和父類返回值引數相同,函式名相同,函式返回值不同,有/無virtual關鍵字 */

// 若無virtual關鍵字(函式重寫,這種情況不屬於「函式過載」範疇)

voidf(

)// 若有virtual關鍵字 (報錯)

virtual

voidg(

)};class

derived

:public base

// 多型

virtual

voidb(

)/* 2.子類和父類返回值引數不同,函式名相同,有/無virtual關鍵字(注:函式過載與virtual關鍵字有無沒有關係) */

// 父類同名成員被隱藏

voidd(

int x,

int y)

// 父類同名成員被隱藏

virtual

voide(

int x,

int y)

/* 3.子類和父類返回值引數相同,函式名相同,函式返回值不同,有/無virtual關鍵字 */

// 返回值與基類不同

過載 重寫 重定義的對比

函式過載 1.必須在同乙個作用域 2.函式名字必須相同 3.引數列表必須不同 引數個數 引數型別 引數次序 4.與函式返回值無關 重定義 1.必須在繼承體系中 2.子類和基類具有相同名稱的成員,可以是成員函式 只有名字相同,與原型是否相同無關。成員變數 只有名字相同,與成員變數的型別無關 3.通過派...

過載重寫重定義

傳智掃地僧課程學習筆記。過載發生了同乙個類中,這個很簡單,不用多說,重寫和重定義,發生了兩個類之間,有virtual關鍵字的,將發生多型,即重寫,沒有的,是重定義,說2個情況,1,若是子類呼叫父類中的函式,並且這個函式名,是名字,在子類中沒有,那麼子類物件可以直接呼叫父類的函式,2,若是這個被呼叫的...

過載 重寫 重定義

何為過載 何為重寫,又何為重定義呢?下面我將從c 實現的角度進行詳細剖析,以及c 語言底層是如何實現過載 重寫和重定義的。一 過載 過載 同乙個類中函式名相同,函式的引數列表不相同的兩個及兩個以上的函式就是函式過載。注意 函式的返回值不能作為函式是否過載的依據。如 類example中,函式a就是過載...