成員函式的過載,覆蓋,與隱藏

2021-07-30 05:12:39 字數 880 閱讀 7695

成員函式的過載,覆蓋與隱藏

1. 過載與覆蓋

成員函式被過載特徵:

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

2) 函式的名字相同

3) 引數不同

4) virtual關鍵字可有可無

覆蓋是指派生類函式覆蓋基類函式

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

2) 函式的名字相同

3) 函式的引數相同

4) 必須有關鍵字virtual

#includeusing namespace std;

class base

執行結果:

1. 令人迷惑的隱藏規則

隱藏:派生類的函式遮蔽了與其同名的基類函式

1) 如果派生類的函式與基類的函式同名,但引數不同,無論有無關鍵字,基類的函式都會被隱藏。(注意與過載區分)

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

#includeusing namespace std;

class base

執行結果:

隱藏規則存在的理由:

如果呼叫函式錯誤,編譯器就會明確指出錯誤,

如果是派生類有多個基類,(多重繼承),有時搞不清楚到底哪些基類定義了要呼叫的函式,如果沒有隱藏規則,可能會調出乙個出乎意料的函式。

成員函式的過載 覆蓋與隱藏

成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概 念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1 ...

成員函式的過載 覆蓋與隱藏

林銳高質量c 程式設計指南 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式...

成員函式的過載 覆蓋 隱藏

成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無.只能靠引數而不能靠返回值型別的不同來區分過載函式.並不是兩個名字相同的函式就能構成函式過載,得具有相同的作用域.過載是指不同的函式使用相同的函式名,但是函式的引數個數或型別不同。呼...