ホームページ >バックエンド開発 >C++ >C の暗黙的なデフォルト コンストラクターは組み込み型メンバーを初期化しますか?

C の暗黙的なデフォルト コンストラクターは組み込み型メンバーを初期化しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-09 11:18:07442ブラウズ

Does C  's Implicit Default Constructor Initialize Built-in Type Members?

デフォルト コンストラクターによる組み込み型の初期化

C では、デフォルト コンストラクターは、以下を実行するクラスのコンパイラーによって暗黙的に定義されます。明示的に宣言されたコンストラクターがありません。この暗黙的な既定のコンストラクターは、組み込み型のメンバーを自動的に初期化しますか?

回答

いいえ、暗黙的に定義された既定のコンストラクターは、組み込み型のメンバーを初期化しません。ただし、クラス インスタンスは他の方法でも初期化できることに注意することが重要です。

値の初期化とデフォルト コンストラクター

一般に、構文 C() が想定されます。デフォルトのコンストラクターを呼び出します。ただし、場合によっては、代わりに値の初期化が実行されます。これは、ユーザーが宣言したデフォルトのコンストラクターが存在しない場合に発生します。値の初期化では各クラス メンバーが直接初期化され、その結果、組み込み型はゼロ初期化されます。

例:

class C {
public:
  int x;
};

ユーザー宣言のコンストラクターが定義されていない場合、C()値の初期化を使用します:

C c;
// c.x contains garbage

明示的次のコードに示すように、値の初期化

() を使用した明示的な値の初期化は、x:

C c = C();
// c.x == 0

C *pc = new C();
// pc->x == 0

集合体の初期化をゼロで初期化します。

集合体の初期化では、メソッドを使用せずにクラス メンバーを初期化することもできます。 constructor:

C c = {}; // C++98
C d{}; // C++11
// c.x == 0, d.x == 0

したがって、デフォルトのコンストラクターは組み込みメンバー型を初期化しませんが、C には代替の初期化メソッドが存在します。

以上がC の暗黙的なデフォルト コンストラクターは組み込み型メンバーを初期化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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