1. 程式人生 > >c++面試題2:虛擬函式是如何實現的?

c++面試題2:虛擬函式是如何實現的?

  • 虛擬函式是通過一張虛擬函式表實現的,有多少個虛擬函式,就有多少個指標;
  • 在這個表中,主要是一個類的虛擬函式的地址表,這張表解決了繼承、覆蓋的問題;
  • 實際上在編譯的時候,編譯器會自動加上虛表
  • 虛擬函式的作用實現動態聯編,也就是說在程式執行階段動態的選擇合適的成員函式,在定義了虛擬函式之後,可以在基類的派生類中對虛擬函式重新定義。
  • 虛表的使用方法是如果派生類在自己定義中沒有修改基類的虛擬函式,我們就指向基類的虛擬函式;如果派生類改寫了基類的虛擬函式,這時續表則將原來指向基類的虛擬函式的地址替換為指向自身虛擬函式的指標。
  • 必須通過基類型別的引用或指標進行函式呼叫才會發生多型