首頁 > 後端開發 > C++ > 為什麼 C 構造函數有兩個符號?

為什麼 C 構造函數有兩個符號?

Linda Hamilton
發布: 2024-11-24 02:41:09
原創
322 人瀏覽過

Why Are There Two Symbols for C   Constructors?

C 建構子的雙重符號

Itanium C ABI 指定建構函式的重整名稱包含有關其型別和參數的資訊。因此,在庫中觀察到的兩個建構函式條目源自於它們不同的建構子類型:

  • 完整物件建構子(C1):此建構子完全初始化對象,包括任何虛擬基類.
  • 基礎對象構造函數(C2):此建構函式初始化物件本身以及資料成員和非虛擬基底類別。

雙重符號和多重定義錯誤

儘管有雙重條目,但不會因使用而出現符號定義衝突C1 和 C2 後綴。 ABI 確保損壞的名稱是唯一的,為以不同方式處理這兩種建構函式類型提供編譯器支援。

其他詳細資訊

  • 在沒有虛擬基的情況下類,完整的物件建構函式和基礎物件建構函式是相同的,並且在充分在優化的情況下,符號可以別名為相同的代碼。
  • 需要雙重構造函數符號主要是由對多態性的支援驅動的,其中不同的物件可能繼承不同的基類,需要專門的初始化。
  • 此行為曾經顯示在 c filt 輸出中,但不再包含在內。

以上是為什麼 C 構造函數有兩個符號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板