成員函式的過載,覆蓋與隱藏
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 關鍵字可有可無.只能靠引數而不能靠返回值型別的不同來區分過載函式.並不是兩個名字相同的函式就能構成函式過載,得具有相同的作用域.過載是指不同的函式使用相同的函式名,但是函式的引數個數或型別不同。呼...