類的成員隱藏,覆蓋與過載

2021-08-21 11:02:39 字數 959 閱讀 4837

8.2.2 令人迷惑的隱藏規則

本來僅僅區別過載與覆蓋並不算困難,但是c++的隱藏規則使問題複雜性陡然增加。這裡「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:

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

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

因為我也是乙個在學習路上的小白,如果有錯誤的地方,懇請指正,謝謝!

第乙個例子:非虛函式的隱藏與過載

#define _crt_secure_no_warnings

#include #include #include using namespace std;

struct base

void func(int i) //這裡的func是過載關係 };

struct derived : public base

};struct derived2 : public base

};int main()

第二個例子:虛函式的隱藏、覆蓋與過載

#define _crt_secure_no_warnings

#include #include #include using namespace std;

struct base

void func(int i)                 //這裡的func同樣也是過載關係 };

struct derived : public base

};struct derived2 : public base

};int main()

總結:除了覆蓋繼承而來的虛函式之外,派生類最好不要重用其他定義在基類中的名字

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

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

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

1.過載 覆蓋與隱藏 1 過載 成員函式具有以下的特徵時發生 過載 a 相同的範圍 同乙個類中 b 函式的名字相同 c 引數型別不同 不能進行隱式型別轉換 d virtual關鍵字可有可無 2 覆蓋 也叫 繼承 指派生類函式覆蓋基類函式,特徵是 a 不同的範圍 分別位於基類與派生類中 b 函式名字相...

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

1.過載 覆蓋與隱藏 1 過載 成員函式具有以下的特徵時發生 過載 a 相同的範圍 同乙個類中 b 函式的名字相同 c 引數型別不同 不能進行隱式型別轉換 d virtual關鍵字可有可無 2 覆蓋 也叫 繼承 指派生類函式覆蓋基類函式,特徵是 a 不同的範圍 分別位於基類與派生類中 b 函式名字相...