c++重載、覆蓋和隱藏

4.c++重載、覆蓋、隱藏的區別和執行方式

既然說到了繼承的問題,那麼不妨討論一下經常提到的重載,覆蓋和隱藏
4.1成員函數被重載的特徵
(1)相同的範圍(在同一個類中); 
(2)函數名字相同; 
(3)參數不同; 
(4)virtual 關鍵字可有可無。 
4.2“覆蓋”是指派生類函數覆蓋基類函數,特徵是:
(1)不同的範圍(分別位於派生類與基類); 
(2)函數名字相同; 
(3)參數相同; 
(4)基類函數必須有virtual 關鍵字。 
4.3“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,特徵是:

(1)如果派生類的函數與基類的函數同名,但是參數不同,此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。 
(2)如果派生類的函數與基類的函數同名,但是參數相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆)。

小結:說白了就是如果派生類和基類的函數名和參數都相同,屬於覆蓋,這是可以理解的吧,完全一樣當然要覆蓋了;如果只是函數名相同,參數並不相同,則屬於隱藏。


4.4 三種情況怎麼執行:

4.4.1 重載:看參數。

4.4.2 隱藏:用什麼就調用什麼。

4.4.3 覆蓋:調用派生類。

轉自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/05/2537451.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章