知識回顧覆蓋隱藏重載

重載(這裏主要考慮函數)

重載的定義:函數名相同,函數的參數列表不同(包括參數個數和參數類型),至於返回類型可同可不同

匹配函數時,編譯器將不區分類型引用和類型本身,也不區分const和非const變量因爲這些在定義和聲明時可能不同,但是在調用時都是一樣的,編譯器將無法區分

 

重載(overloaded)和多態無關,真正和多態相關的是覆蓋(inheritance)

補充:派生類重新定義了基類的虛擬方法後,基類根據賦給它的不同的派生類引用,動態地調用屬於派生類的對應方法,這樣的方法調用在編譯期間是無法確定的。因此,這樣的方法地址是在運行期綁定的動態綁定

 

覆蓋:

在派生類中覆蓋基類中的同名函數,要求兩個函數的參數個數、參數類型、返回類型都相同,且基類函數必須是虛函數。

 

隱藏

派生類中的函數屏蔽了基類中的同名函數,2個函數參數相同,但基類函數不是虛函數(和覆蓋的區別在於基類函數是否是虛函數)。2個函數參數不同,無論基類函數是否是虛函數,基類函數都會被屏蔽(和重載的區別在於兩個函數不在同一類中)。

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