成員函數的重載、覆蓋和隱藏的區別與聯繫

1.重載:說的是在同一個類中,有兩個成員函數同名,他們的形參列表必須不同,也就是說他們的形參個數和形參類型至少有一着是不相同的。但不能出現函數的形參個數與類型均相同,僅僅依靠函數返回值類型的不同來區分,這和普通函數的重載概念是完全一致的。
重載是指通一個類中不同方法之間的關係,是水平關係。
2、覆蓋,說的是基類和派生類之間的虛函數的關係。假設基類中由虛函數func(),派生類中也由虛函數func(),並且這兩個虛函數擁有同名的函數名、形參列表、返回值類型,那麼派生類就覆蓋了基類的虛函數。
覆蓋是指基類和派生類之間的關係,該成員函數必須是虛函數。重點內容
3、隱藏:說的是某些情況下派生類的成員函數屏蔽了基類的成員函數。
主要有兩種情況:(1)兩個函數形參列表相同,但基類的該函數不是虛函數,這和覆蓋的最主要區別就在於該基類是不是虛函數。
(2)兩個函數形參列表不同,無論基類的該函數是不是虛函數,基類函數都會被同名的派生類屏蔽掉,這和重載的最主要區別就在於兩個函數不在通一個類中。。

*它們的調用,可以由對象名+作用域運算符::加以區別。

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