在C++中存在兩種比較難理解的概念
1、函數重載
首先在C++中,如果兩個函數的作用域相同,然后兩個函數的名字相同但是形參不同,這樣的兩個函數是會形成重載關系的。
但是對是否是virtual的要求可有可無,而且對返回值類型的要求也可有可無。
有一點值得注意的是const會影響函數的重載,因為在多個參數的函數中,const會影響參數的優先順序從而導致兩個函數的參數在同一隊列,這樣就會產生錯誤,但是這種錯誤是發生在調用過程中的,也就是說如果不對相關聯的函數進行調用,是不會發生錯誤的。
2、函數重寫
函數重寫在C++中是屬於不同的兩個類中,而且一定要是虛函數(virtual),如果存在函數名相同、形參列表相同,返回值類型相同(可以不同,但是必須是可以經過某種方式進行轉換的),就會形成重寫,
重寫和覆蓋本質上是同一中語法的不同名稱而已。所以在期間一定是發生過繼承關系的父子類之間才會形成重寫(覆蓋)。否則就有可能形成重寫