1. 程式人生 > >C++重載、覆蓋與隱藏關系

C++重載、覆蓋與隱藏關系

註意 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++重載、覆蓋與隱藏關系