背景:
C には暗黙的なデフォルト コンストラクターが存在します。開発者の間で疑問が生じました。教科書の主張では、何も明示的に宣言されていない場合にコンパイラが 1 を生成し、理論的にはデータ メンバーをゼロに初期化することが示唆されています。
デフォルトのコンストラクター実装
クラスにコンストラクターが定義されていない場合、コンパイラはデフォルトのコンストラクターを作成します。その動作は次のとおりです。
POD (Plain Old Data) 型の場合、明示的なコンストラクターは存在しませんが、デフォルトの動作はアクションがないことと同じです。
追加の影響
コピー コンストラクター、コピー代入演算子、デストラクター: これらのいずれも定義されていない場合、コンパイラーはデフォルトの実装を提供します:
移動コンストラクター、移動代入演算子: 何も定義されていない場合、コンパイラーは再びデフォルトを提供します:
結論:
コンパイラは提供しますが、暗黙的なデフォルト コンストラクターであるため、データ メンバーをゼロで初期化しません。コンストラクターの動作は、基本クラスとメンバー変数をデフォルトで構築することです。この動作は、コピー/移動コンストラクターおよび代入演算子のデフォルトの実装と合わせて、C での一貫したオブジェクトの作成と操作を保証します。
以上がC はデフォルトのコンストラクターでデータメンバーを暗黙的にゼロ初期化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。