函式過載,覆蓋和隱藏

2021-08-13 04:03:35 字數 814 閱讀 6783

a.成員函式被過載的特徵:

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

(2)函式名字相同;

(3)引數不同;

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

b.覆蓋是指派生類函式覆蓋基類函式,特徵是:

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

(2)函式名字相同;

(3)引數相同;

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

c.「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

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

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

過載:只有在 

同一類定義中的同名成員函式才存在過載關係 ,主要特點是 

函式的引數型別和數目有所不同 ,但 

不能出現函式引數的個數和型別均相同 ,僅僅依靠返回值型別不同來區分的函式,這和普通函式的過載是完全一致的。另外,過載和成員函式是否是虛函式無關

覆蓋:

在 派生類中覆蓋基類中的同名函式,要求兩個函式的

引數個數、引數型別、返回型別都相同,且基類函式必須是虛函式。

隱藏:

派生類中的函式遮蔽了基類中的同名函式,

2個函式引數相同,但基類函式不是虛函式(

和覆蓋的區別在於基類函式是否是虛函式)。2個函式引數不同,無論基類函式是否是虛函式,基類函式都會被遮蔽(

和過載的區別在於兩個函式不在同一類中)。

過載 覆蓋和隱藏

部分文字內容摘自 高質量c c程式設計 1 過載 overload 1 相同的範圍,在同乙個類中。2 函式名相同,引數不同。3 virtual可有可無。這在平時設計中用的比較多,比如遊戲中角色說話,可以設計成 void senddialog const char content 預設 void se...

函式過載 覆蓋與隱藏

overload 翻譯過來就是 超載,過載,過載,超出標準負荷 override 翻譯過來是 重置,覆蓋,使原來的失去效果。先來說說過載的含義,在日常生活中我們經常要清洗一些東西,比如洗車 洗衣服。儘管我們說話的時候並沒有明確地說用洗車的方式來洗車,或者用洗衣服的方式來洗一件衣服,但是誰也不會用洗衣...

函式過載 隱藏與覆蓋

出現在相同作用域中的兩個函式,如果具有相同的名字而形參表不同,則稱為過載函式。作用 省去了為函式起名並記住函式名字的麻煩,簡化了程式的實現,使程式更容易理解。注意 main函式不能過載 函式不能僅僅基於不同的返回值型別而實現過載 進行函式過載時,要求同名函式在引數個數上不同,或者引數型別上不同 區域...