生活 + 筆記

4.20.2010

C++ overloading 和 overriding 的差別

虛擬函數的同名覆蓋 ( overriding ) 與函數重載 ( overloading ) 兩者在本質上有很大的不同:

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

沒有留言:

張貼留言