虛函數表博文總結

對虛函數實現方式的理解:
1.每個有虛函數的類都有虛函數表,記錄了繼承的虛函數、自己重載的虛函數的地址。
2.多重繼承時,有多個虛函數表,每繼承一個父類產生一個虛函數表。
3.構造函數構造對象時,在對象所在內存的首地址放置虛函數表的地址;如果這個類有多個虛函數表就放置多個虛函數表的地址。
4.虛函數表是在編譯時生成的。如果某個類,在程序中就沒有被使用,也就是沒有實例化類,那麼這個類的虛表就不會產生。虛表裏的指針值是在程序加載時確定的。
5.程序運行時,從對象的開始地址獲取虛函數表的地址,然後再從虛函數表獲取函數的地址。這些信息在編譯時就可以獲取。


從下面三個非常棒的博文可以更好的理解虛函數的實現方式。

http://blog.csdn.net/linyt/article/details/6336762
http://blog.csdn.net/zhanglei8893/article/details/6333751


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