假設有一個名爲Person的類,它包含一個名爲age()的虛函數。根據語言語義,vtable是每個類而不是每個對象。它是每個對象的VPTR,並指向vtable。vtable中虛函數的地址
問題:
如果我建立這個程序(可以說main()的存在):
將虛函數表中創建即可以VTABLE自帶存在W/O甚至創建一個對象?
編譯器放入vtable for age()的地址是一種內存中的某種靜態地址嗎?
或者它是編譯器內部創建一些對象來獲取age()的地址(因爲age()將在一些數據成員上工作,這些數據成員只有在構造對象時纔會存在)或者有一些這背後的其他魔法?
按我的理解,答覆如下:
- 是
- 是
- 不知道
我試圖在上面運行的程序 「納米」 剛看看我能不能找出虛擬表,但沒有運氣。有沒有辦法做到這一點?
請建議。
這一切都取決於實現,所以你必須指定你使用哪個編譯器,如果你想要一個實際的答案。 – 2011-12-30 19:06:33
*根據語言語義* ...語言甚至沒有提及*虛擬表*或*虛擬表指針*,而是可以用虛擬表實現的操作的語義(如在所有當前編譯器中)或與任何其他方法 – 2011-12-30 19:12:12
謝謝@EtiennedeMartel – 2011-12-30 21:17:55