過載 覆蓋 隱藏的區別

2021-04-14 02:21:00 字數 800 閱讀 2627

在csdn上經常看到這種問題 ,如何區別3者,從論壇中已經能夠找到完善的答案,現在自己也總結一下,加深印象,同時希望對讀者您有用。

這不是乙個新的概念,在c++中乙個比較重要的概念(c語言裡面不允許),特徵就是允許函式名相同,通過指定不同的引數或者返回值來區別。

這裡我們所說的過載是針對c++中類的,類中過載與前面所說的也完全一樣。

特點: 1.在同乙個類內

2.相同的函式名

3.不同引數

覆蓋是c++物件導向提出的乙個新概念,如果實現覆蓋呢? 這個也就是我們常說的多型。通過乙個虛函式表實現的,基類使用virtual來宣告乙個函式為虛函式,建立了一張虛函式表,如果子類重寫該函式,子類例項的指標就會指向重寫的函式。這就造成了,相關例項(子類,基類)對同一介面呼叫時產生不同效果,我們稱之為多型。多型是c++的高階特性。

特點:1.在不同類內(乙個在子類,乙個在父類)

2.基類函式需要使用virtual宣告,子類的可有可無

3.函式名,引數均需相同

隱藏是一種現象,也算是一種特性,在c++中,子類可以讓呼叫者看不到父類同名函式,也就是說子類中不能使用父類的同名函式,這種現象叫隱藏。

特點:1.在不同類內(乙個在子類,乙個在父類)

2.函式名相同

2.如果基類函式使用了virtual,那麼子類函式需要有不同的引數

4.如果基類沒有virtual,那麼子類函式可以與基類的函式完全相同,也可不同

1. 過載:看引數(引數)

2. 隱藏:用什麼就呼叫什麼(子類看不到基類的隱藏函式)

3. 覆蓋:呼叫派生類(傳什麼指標調誰的)

過載 覆蓋 隱藏的區別

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

過載 覆蓋 隱藏的區別

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

隱藏,覆蓋,過載的區別

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