虛擬函數的同名覆蓋 ( overriding ) 與函數重載 ( overloading ) 兩者在本質上有很大的不同:
- overriding 是動態的 ( Dynamic ) 或稱延遲連結 ( Late Binding ),overloading 是靜態的 ( Static ) 或稱早期連結 ( Early Binding )
- 宣告overriding時要將在基礎類別前加上virtual
- 衍生類別的函數其名稱、傳回型態與參數列需與基礎類別的虛擬函數完全相同;而overloading除了函數名稱要相同外,其餘的傳回型態和參數列皆不同
- 決定呼叫哪個函數的權列,overriding在執行時決定,而overloading是在編譯時決定



沒有留言:
張貼留言