隱藏,覆蓋,過載的區別

2021-07-22 17:05:26 字數 518 閱讀 6599

1:先說過載,1首先兩個函式的作用域必須相同,(這點很重要,基類和派生類不在乙個作用域,所以基類和派生類的函式不可能過載),2函式名相同,3引數列表(引數型別,引數的個數,引數了順序)不相同,4與返回值無關,叫過載;

2:隱藏:在基類和派生類之間發生的關係,函式名相同,派生類的函式把基類的函式給隱藏了,只關注函式數名,不管返回值和引數。

例:

#include

using namespace std;

class a

};int main()

3:覆蓋:覆蓋是隱藏的一種特殊情況,派生類和基類的函式,

1 函式名相同;

2 返回值相同;

3 引數列表相同(不包括this指標在內);

4 基類函式為虛函式;

即為覆蓋。

例:

#include

using namespace std;

class a

過載 覆蓋 隱藏的區別

在csdn上經常看到這種問題 如何區別3者,從論壇中已經能夠找到完善的答案,現在自己也總結一下,加深印象,同時希望對讀者您有用。這不是乙個新的概念,在c 中乙個比較重要的概念 c語言裡面不允許 特徵就是允許函式名相同,通過指定不同的引數或者返回值來區別。這裡我們所說的過載是針對c 中類的,類中過載與...

過載 覆蓋 隱藏的區別

過載 覆蓋 隱藏的區別 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual 關鍵字。隱藏...

過載 覆蓋 隱藏的區別

高質量c c程式設計指南 已經清晰的列出了過載函式的特性 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual關鍵字可有可無。因為函式引數不同,可以簡單的理解為 兩個過載函式是不同的函式,呼叫者能夠明確 的根據不同的引數來呼叫不同的函式。那麼如果存在這樣兩個函式,編譯器怎...