網上看到的關於C++函數的重載、覆蓋和隱藏區別的回答,如下(其內容來源於C++面試寶典中一道題目):
a.成員函數被重載的特征:
(1)相同的范圍(在同一個類中);
(2)函數名字相同;
(3)參數不同;
(4)virtual 關鍵字可有可無。
b.覆蓋是指派生類函數覆蓋基類函數,特征是:
(1)不同的范圍(分別位於派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual 關鍵字。
c.“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,規則如下:
(1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
(2)如果派生類的函數與基類的函數同名,並且參數也相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆).
看了后,覺得還是寫的有點復雜。自己總結了一下
(1)成員函數被重載,是在一個類當中,具體的概念上面已經有所陳述。
(2)覆蓋指派生類函數覆蓋基類函數,從其特征可以看出,它是為了實現多態的效果。描述了要實現多態的必要條件
(3)“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,其特征實際上是要實現多態的效果所需要的充要條件。