c 過載 覆蓋 隱藏的區別和執行方式

2021-07-10 06:25:06 字數 666 閱讀 4390

.c++過載、覆蓋、隱藏的區別和執行方式

既然說到了繼承的問題,那麼不妨討論一下經常提到的過載,覆蓋和隱藏

4.1成員函式被過載的特徵

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

(2)函式名字相同;

(3)引數不同;

(4)virtual 關鍵字可有可無。

4.2「覆蓋」是指派生類函式覆蓋基類函式,特徵是:

(1)不同的範圍(分別位於派生類與基類);

(2)函式名字相同;

(3)引數相同;

(4)基類函式必須有virtual 關鍵字。

4.3「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,特徵是:

(1)如果派生類的函式與基類的函式同名,但是引數不同,此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。

(2)如果派生類的函式與基類的函式同名,但是引數相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)。

小結:說白了就是如果派生類和基類的函式名和引數都相同,屬於覆蓋,這是可以理解的吧,完全一樣當然要覆蓋了;如果只是函式名相同,引數並不相同,則屬於隱藏。

c 過載 覆蓋 隱藏的區別和執行方式

成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual 關鍵字。隱藏 是指派生類的函式遮蔽了...

C 過載 覆蓋和隱藏的區別

1 過載 覆蓋和隱藏的概念 覆蓋 覆蓋指的是派生類的虛函式覆蓋了基類的同名且引數相同的函式。過載 必須在乙個域中,函式名稱相同但是函式引數不同,過載的作用就是同乙個函式有不同的行為,因此不是在乙個域中的函式是無法構成過載的,這是過載的重要特徵。隱藏 是派生類的成員函式隱藏了基類函式的成員函式,在呼叫...

C 過載 覆蓋和隱藏的區別

在同一作用域中函式名相同但引數不同 包括引數型別不同,引數個數不同或二者都不同 的函式稱為過載 overload 函式。void print const char ch void print int a void print int a,int b print hello world 呼叫print...