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

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

Linda Hamilton
Linda Hamilton原創
2024-12-06 09:55:14571瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn