C++函數的重載、覆蓋和隱藏區別


網上看到的關於C++函數的重載、覆蓋和隱藏區別的回答,如下(其內容來源於C++面試寶典中一道題目):

a.成員函數被重載的特征:
(1)相同的范圍(在同一個類中);
(2)函數名字相同;
(3)參數不同;
(4)virtual 關鍵字可有可無。
b.覆蓋是指派生類函數覆蓋基類函數,特征是:
(1)不同的范圍(分別位於派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual 關鍵字。
 c.“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,規則如下:
(1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
(2)如果派生類的函數與基類的函數同名,並且參數也相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆).

看了后,覺得還是寫的有點復雜。自己總結了一下

(1)成員函數被重載,是在一個類當中,具體的概念上面已經有所陳述。

  (2)覆蓋指派生類函數覆蓋基類函數,從其特征可以看出,它是為了實現多態的效果。描述了要實現多態的必要條件

  (3)“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,其特征實際上是要實現多態的效果所需要的充要條件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM