2011-06-23 68 views

回答

11

它沒有類型。它是標準未指定的實現細節; 它不是語言的一部分。

請注意,C++並不是說必須有虛擬表或虛擬「指針」(儘管這是C++工具鏈中最常見的RTTI實現)。

此外,你的分析是錯誤的。例如在GCC中,通常每個對象都會獲得一個vptr,該vptr指向該對象類型的相關虛擬表:object has pointer,type has table。

+0

噢,你的答案是沒有樂趣:( – Blindy

+0

@Blindy:。至少它不是完全誤導 –

+0

喜 按照我的理解虛函數表的一流水平,形成 正如你說的,「在海灣合作委員會,通常每個對象得到一個指向該對象類型的相關虛表的vptr:object has pointer,type has table「。 如果每個對象都有自己的vptr並且都指向同一個vtable,那麼需要創建不同的vptr指針。我們可以創建一個靜態類級別vptr –

2

即使大多數實現使用它,該標準也不能保證虛擬表指針的存在。

因此,它沒有類型。它只是一個指針數組。

+1

它也不是一個指針數組。它在C++結構方面沒有任何表示。 –

1

它具有編譯器相關類型,只要編譯器理解它就可以是任何東西。由於該語言沒有提及任何關於vptr的內容,程序員都沒有在代碼中使用它,所以編譯器可以自由創建任何類型的來實現運行時多態性。 類型不必與C++語言一致。

相關問題