首頁 > 後端開發 > C++ > C 是否在預設建構函式中隱式初始化內建型別?

C 是否在預設建構函式中隱式初始化內建型別?

Linda Hamilton
發布: 2024-12-06 09:55:14
原創
541 人瀏覽過

Does C   Implicitly Initialize Built-in Types in Default Constructors?

隱式預設建構子是否初始化內建型別?

雖然編譯器產生的預設建構函式負責初始化類別的成員,但此規則不適用於內建型別。隱式預設建構函式使內建型別成員未初始化。

但是,還有其他初始化類別實例的機制。

值初始化

語法C() 可能看起來調用預設構造函數,但實際上,它執行值初始化,其中:

  • 僅觸發使用者宣告的預設建構函式(如果存在)。
  • 對於沒有使用者宣告的建構子的類,它會跳過預設建構子。
  • 直接值- 內建類型的初始化導致零初始化。

範例:

class C { public: int x; };
C c; // Compiler-generated default constructor used, x retains garbage
登入後複製

明確初始化

明確 ()初始化程序觸發內建型別和使用者宣告的值初始化

C c = C(); // Value initialization used, x is zero-initialized
C *pc = new C(); // Value initialization used, pc->x is zero-initialized
登入後複製

聚合初始化

聚合初始化也會初始化類別實例,而不涉及建構函式。

C c = {}; // x is zero-initialized
C d{}; // C++11 aggregate initialization, x is zero-initialized
登入後複製

以上是C 是否在預設建構函式中隱式初始化內建型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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