替代的虛擬函數呼叫實作
而虛擬表和虛擬指標機制通常用於在C編譯器中實作虛擬函數的動態調度,有沒有採用替代方法的編譯器?
編譯器實作
絕大多數 C 編譯器,包括 G 和 Microsoft Visual Studio,都利用虛擬表和虛擬指標方法進行動態調度。然而,在極少數情況下,編譯器可能會以不同的方式實現它。例如,某些編譯器可能使用類似於物件內指標的東西,其中虛擬函數指標儲存在物件本身內。對於具有大量基數和數組的複雜物件來說,此類實作可能更有效,因為它們只需要映射表中的單一條目來表示數組中的所有物件。
物件大小和虛擬函數
「任何僅具有虛函數的類別的大小將是該編譯器上指標(其中的vptr)的大小」的說法通常是正確的,因為虛擬指標通常會作為物件的一部分儲存。然而,在使用不同虛擬分派方法的替代實作中,情況可能並非總是如此。
總之,雖然虛擬表和虛擬指標機制是 C 編譯器中最受歡迎的動態分派實現,但有些編譯器可以針對某些最佳化場景採用替代方法。使用的具體實作可能會影響儲存要求和查找效率等因素。
以上是C 編譯器中是否有虛擬函式呼叫的替代實作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!