ホームページ >バックエンド開発 >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

明示的な初期化

明示的な () 初期化子を明示的に指定します。組み込み型とユーザー宣言の両方の値の初期化をトリガーしますconstructors.

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。