博客已遷移至:http://kulv.sinaapp.com/
關於基類構造函數調用虛函數實際調用的不是派生類的問題的原因
我們知道,類的構造函數裏面編譯器插入了很多代碼,比如異常安全,虛函數表指針的設置,基類構造,等等。
而且,關鍵是這些代碼時在任何用戶的代碼(非初始化)的地方之前插入的,問題就來了···
如果在基類構造函數裏面調用基類的虛函數,那麼,實際調用的卻不像我們當初認爲的多態效果,爲什麼呢?
下面看看編譯怎麼實現的就知道了····
下面是測試類:
原因:
上面沒有訪問虛函數表,是因爲編譯器優化了一下,如果我們的A類構造函數是這樣的,那麼···