C 建構子的雙重符號 Itanium C ABI 指定建構函式的重整名稱包含有關其型別和參數的資訊。因此,在庫中觀察到的兩個建構函式條目源自於它們不同的建構子類型: 完整物件建構子(C1):此建構子完全初始化對象,包括任何虛擬基類. 基礎對象構造函數(C2):此建構函式初始化物件本身以及資料成員和非虛擬基底類別。 雙重符號和多重定義錯誤 儘管有雙重條目,但不會因使用而出現符號定義衝突C1 和 C2 後綴。 ABI 確保損壞的名稱是唯一的,為以不同方式處理這兩種建構函式類型提供編譯器支援。 其他詳細資訊 在沒有虛擬基的情況下類,完整的物件建構函式和基礎物件建構函式是相同的,並且在充分在優化的情況下,符號可以別名為相同的代碼。 需要雙重構造函數符號主要是由對多態性的支援驅動的,其中不同的物件可能繼承不同的基類,需要專門的初始化。 此行為曾經顯示在 c filt 輸出中,但不再包含在內。