1. 程式人生 > >c++ overload(過載),override(覆蓋), hide(隱藏)

c++ overload(過載),override(覆蓋), hide(隱藏)

1、overload過載,發生在兩個函式作用域相同,兩個函式名相同,但是函式引數數量,型別,順序不同的情況下,此時編譯器將會根據傳入的引數數量、型別和順序不同來決定呼叫哪個函式。注意,返回型別不同無法構成overload,但是const有時候會造成過載,具體情況如下圖:

其中,放在函式尾部修飾時的例子如下:

2、override覆蓋,發生在基類有虛擬函式時,派生類可以重寫和基類虛擬函式同名且引數表也相同的函式,此時編譯器將按照指標來決定呼叫哪個函式。當然,指標只能是基類的指標,因為派生類將會包含基類的所有方法和變數,那麼基類的指標也可以被當作是派生類的指標來看待。所以一個基類的指標,如果是指向了一個派生類,且該派生類中也重寫了基類中的虛擬函式,那麼呼叫該指標的該名稱方法將會直接呼叫該派生類中重寫的該方法。

3、hide隱藏,發生在基類函式和派生類函式同名,但是基類該名稱函式沒有virtual關鍵字修飾,這將導致無法在派生類中呼叫到基類的函式,當然在基類的物件中還是可以呼叫到基類中的該函式。