2012-11-22 20 views

回答

0

我腦海中浮現的第一個想法是名稱改變。在C++中但不在C中,可以有兩個名稱相同但參數不同的方法。編譯器必須區分這兩種方法,從而在內部更改(損壞)名稱。

C++編譯器必須在C中執行該操作的另一件事是處理類繼承。你有抽象類,重寫方法和虛擬方法。這需要更多的處理來整理。

0

我不能說我理解得很好,但這blog entry by Ian Lance Taylor似乎有一個答案。從那裏引用:

使用C++有一些特殊的挑戰。爲類添加新的虛擬方法可以是任何使用該類的函數的ABI更改。在這種情況下提供類的向後兼容版本非常尷尬 - 沒有自然的方式來指定用於虛擬表的名稱和版本或舊版本的RTTI信息。

當然,您絕不能刪除任何符號。

閱讀條目以獲得更多的上下文。 (ABI =應用程序二進制接口)

相關問題