關於基類構造函數調用虛函數實際調用的不是派生類的問題的原因

博客已遷移至:http://kulv.sinaapp.com/

關於基類構造函數調用虛函數實際調用的不是派生類的問題的原因


 

我們知道,類的構造函數裏面編譯器插入了很多代碼,比如異常安全,虛函數表指針的設置,基類構造,等等。

而且,關鍵是這些代碼時在任何用戶的代碼(非初始化)的地方之前插入的,問題就來了···

如果在基類構造函數裏面調用基類的虛函數,那麼,實際調用的卻不像我們當初認爲的多態效果,爲什麼呢?

下面看看編譯怎麼實現的就知道了····

下面是測試類:

 

原因:

 

上面沒有訪問虛函數表,是因爲編譯器優化了一下,如果我們的A類構造函數是這樣的,那麼···

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章