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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 03:34:09729ブラウズ

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

組み込み型でのデフォルトのコンストラクターの動作

質問:

コンパイラーによって自動的に生成されるデフォルトのコンストラクターを実行します。 C で組み込み型を初期化する?

答え:

いいえ、デフォルトのコンストラクター (ユーザー定義コンストラクターのないクラスのコンパイラーによって作成される) は、組み込み型のメンバーを初期化しません。

ただし、デフォルトを含まないクラス インスタンスを初期化するメカニズムが他にもあることに注意することが重要です。 constructor:

  • Value-initialization: 構文 C() (ユーザー宣言されたコンストラクターが使用できない場合) は、値の初期化を実行し、組み込み型をゼロ初期化します。
  • 集合体の初期化:構文 C {} または C{};コンストラクターを呼び出さずにクラスのすべてのメンバーを初期化します。

例:

次のクラスについて考えてみましょう:

class C {
public:
  int x;
};

コンパイラー- C 用に提供されたデフォルトのコンストラクターは初期化されませんC::x.

C c; // Compiler-provided default constructor is used
// c.x contains garbage

対照的に、値初期化または集約初期化を使用すると、C::x:

C c = C(); // Uses value-initialization instead of default constructor
            // c.x == 0

C d{}; // Aggregate initialization
       // d.x == 0
がゼロ初期化されます。

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

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