C 中的過載 覆蓋和隱藏的區分

2021-07-01 18:16:39 字數 524 閱讀 5871

c++中經常用到過載、覆蓋和隱藏這三個概念,也經常容易搞混。所以,這篇博文來整理一下它們之間的異同。

1. 過載——實現多型性

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

b.函式的名字相同

c.引數型別不同(不能進行隱式型別轉換)

d.virtual關鍵字可有可無

2. 覆蓋(重寫)——派生類函式覆蓋基類函式

a.不同的範圍(分別位於基類與派生類中)

b.函式名字相同

c.引數相同

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

3. 隱藏(重定義)——派生類的函式遮蔽了與其同名的基類函式

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

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

C 中的過載 覆蓋和隱藏的區分

今天看書遇到了c 中比較難纏的概念,就是過載 覆蓋和隱藏。如果只要區分過載和覆蓋,相信應該沒有什麼難度,並且它們的界限還是比較清晰的。現在加上了隱藏,初次看這些概念還真是不好區分。下面總結一下它們之間的區別 成員函式的 b color red 過載 color b 的特徵有以下4點 1 必需在相同的...

C 中覆蓋,過載和隱藏

include using namespace std struct foo void func int x 那麼,如果不用 using 宣告,拆分後 中的函式 func 不是過載應該是什麼呢?是隱藏 hide 下面是關於過載 覆蓋和隱藏的區別 這幾個概念都有乙個共同點 函式名稱相同,所以不免讓人混...

關於C 中的過載,覆蓋和隱藏

關於第八章中的 c 中的過載,覆蓋和隱藏 有一點沒看明白,貼上來,希望有高手指點.原文 如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏 關於這句話,書上的例子如下 include class base void g float x vo...