函式的隱藏:
1.派生類與基類的函式完全相同(函式名和引數列表都相同),只是基類的函式沒有使用virtual關鍵字。此時基類的關鍵字將被隱藏,而不是覆蓋。
2.派生類的函式與基類的函式同名,但引數列表不同,在這種情況下,不管基類的函式宣告是否有virtual關鍵字,基類的函式都將被隱藏。(與過載區分)
繼續使用這個學習例程,基類animal中定義了虛函式breathe(),派生類fish中定義了breathe(int a)函式。
1.一開始fn傳入的還是指向animal型別的指標,若在fn中呼叫species->breathe();我們發現可以輸出animal breathe。
species->breathe(1);animal::breathe不接受乙個引數。
species->fish::breathe(1);提示限定名不是類「animal」或其基類的成員了。
2.fn傳入指向fish的指標,
species->breathe(1);輸出fish breathe。
species->animal::breathe();輸出animal breathe。
//species->breathe();非法,提示fish::breathe函式不接受0個引數。
#include#include#includeusing namespace std;
class animal
void main()
C 筆記 函式過載 覆蓋 隱藏
過載 overload 同乙個類中,函式名字相同,引數不同 引數型別和個數 virtual可有可無 返回值這個條件不構成過載 覆蓋 override,重寫 子類函式覆蓋父類函式,函式名字相同,引數相同,基類函式必須有virtual關鍵字,子類virtual可有可無隱藏 子類函式把父類函式隱藏,函式名...
C 成員函式的過載 覆蓋與隱藏
成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概念,否則錯誤將防不勝防。成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋 派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與...
C 成員函式的過載 覆蓋與隱藏
成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概念,否則錯誤將防不勝防。成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋 派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與...