C++重載、覆蓋與隱藏關系
阿新 • • 發佈:2017-06-18
註意 tar soft 範圍 span rtu 類函數 href 不存在
在C++中,成員函數的重載、覆蓋與隱藏是很容易混淆的概念,一定要搞清楚他們之間的關系與差別。
1、成員函數重載的特性
(1)相同的範圍(即在同一個類中)。也就是意味著基類與派生類之間的成員函數不存在重載的關系;
(2)成員函數名字相同,參數不同;
(3)virtual關鍵字可有可無。
2、覆蓋
覆蓋是指派生類函數覆蓋基類函數,特征是:
(1)不同的範圍(分別位於派生類與基類中);
(2)函數的名字相同,參數也相同;
(3)基類函數必須要有virtual關鍵字修飾。
3、隱藏
這裏的“隱藏”指的是派生類函數屏蔽了基類中與其同名的成員函數,需要與上面的兩個概念區別開來:
(1)如果派生類的函數與基類的函數同名,但是參數不同,此時無論基類函數是否有virtual關鍵字,基類函數
都將被“隱藏”。
(2)如果派生類函數與基類函數同名,並且參數也相同,但是基類函數沒有virtual關鍵字修飾,那麽此時
基類函數將被“隱藏”。
這三個關系是非常容易混淆的,一定要註意他們之間的區別、不同之處。
參考博文:http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html
C++重載、覆蓋與隱藏關系