重載(這裏主要考慮函數)
重載的定義:函數名相同,函數的參數列表不同(包括參數個數和參數類型),至於返回類型可同可不同。
匹配函數時,編譯器將不區分類型引用和類型本身,也不區分const和非const變量,因爲這些在定義和聲明時可能不同,但是在調用時都是一樣的,編譯器將無法區分。
重載(overloaded)和多態無關,真正和多態相關的是覆蓋(inheritance)。
補充:當派生類重新定義了基類的虛擬方法後,基類根據賦給它的不同的派生類引用,動態地調用屬於派生類的對應方法,這樣的方法調用在編譯期間是無法確定的。因此,這樣的方法地址是在運行期綁定的(動態綁定)。
覆蓋:
在派生類中覆蓋基類中的同名函數,要求兩個函數的參數個數、參數類型、返回類型都相同,且基類函數必須是虛函數。
隱藏
派生類中的函數屏蔽了基類中的同名函數,2個函數參數相同,但基類函數不是虛函數(和覆蓋的區別在於基類函數是否是虛函數)。2個函數參數不同,無論基類函數是否是虛函數,基類函數都會被屏蔽(和重載的區別在於兩個函數不在同一類中)。