C 重寫重載重定義區別

2021-07-25 15:54:59 字數 1991 閱讀 8526

c++

重寫重載重定義區別

1 overload: 是函式名相同,引數列表不同.過載只是在類的內部存在。但是不能靠返回型別來判斷。

成員函式過載特徵:

a 相同的範圍(在同乙個類中)

b 函式名字相同

c 引數型別、個數不同

d virtual關鍵字可有可無

2 override:也叫做覆蓋。重寫(覆蓋)是指派生類函式覆蓋基類函式。子類重新定義了父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中出現的。

特徵是:

a 不同的範圍,函式分別位於基類和派生類中

b 函式的名字相同

c 引數相同

d 基類函式必須有virtual關鍵字(多型)

重寫需要注意:

1 被重寫的函式不能是static的。必須是virtual的

2 重寫函式必須有相同的型別,名稱和引數列表

3 重寫函式的訪問修飾符可以不同。儘管virtual是private的,派生類中重寫改寫為public,protected也是可以的

3重定義 (redefining)也叫做隱藏:

子類重新定義父類中有相同名稱的非虛函式 ( 引數列表可以不同 ) 。

如果乙個類,存在和父類相同的函式,那麼,這個類將會覆蓋其父類的方法,除非你在呼叫的時候,強制轉換為父類型別,否則試圖對子類和父類做類似過載的呼叫是不能成功的。

重定義(隱藏)是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

a 如果派生類的函式和基類的函式同名,但是引數不同,此時,不管有無virtual,基類的函式被隱藏。

b 如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有vitual關鍵字,此時,基類的函式被隱藏。

綜上所述,總結如下:

1 成員函式過載特徵:

a 相同的範圍(在同乙個類中)

b 函式名字相同

c 引數不同

d virtual關鍵字可有可無

2 重寫(覆蓋)是指派生類函式覆蓋基類函式,特徵是:

a 不同的範圍,分別位於基類和派生類中

b 函式的名字相同

c 引數相同

d 基類函式必須有virtual關鍵字

3 重定義(隱藏)是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

a 如果派生類的函式和基類的函式同名,但是引數不同,此時,不管有無virtual,基類的函式被隱藏。

b 如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有vitual關鍵字,此時,基類的函式被隱藏。

#include

using

namespace std;

//過載:必須在同乙個類中進行

//     

子類無法過載父類的函式

父類同名函式將被名稱覆蓋

//     

過載是在編譯期間根據引數型別和個數決定函式呼叫 //

重寫:必須發生於父類和子類之間

//     

並且父類與子類中的函式必須有完全相同的原型

//     

使用virtual

宣告之後能夠產生多型

(如果不使用

virtual

,那叫重定義)

//     

多型是在執行期間根據具體物件的型別決定函式呼叫

class parent

voidabc()

//virtualvoid func()

voidfunc()

virtual

void func(inti, int j)

virtual

void func(inti, int j, intk)

};class child : public parent

voidfunc(int i, intj)

voidfunc(int i, intj, int k)

};int main()

C 重寫重載重定義區別

過載overload 是函式名相同,引數列表不同 過載只是在類的內部存在。但是不能靠返回型別來判斷。重寫override 也叫做覆蓋。子類重新定義父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中出現的 重寫需要注意 1 被重寫的函式不能是static的。必須是vir...

C 重寫重載重定義區別

用的時候老是忘記。特此記下。過載overload 是函式名相同,引數列表不同 過載只是在類的內部存在。但是不能靠返回型別來判斷。重寫override 也叫做覆蓋。子類重新定義父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中出現的 重寫需要注意 1 被重寫的函式不能是...

C 重寫重載重定義區別

源自 1 成員函式過載特徵 a 相同的範圍 在同乙個類中 b 函式名字相同 c 引數不同 d virtual關鍵字可有可無 2 重寫 覆蓋 是指派生類函式覆蓋基類函式,特徵是 a 不同的範圍,分別位於基類和派生類中 b 函式的名字相同 c 引數相同 d 基類函式必須有virtual關鍵字 3 重定義...