暗黙的なデフォルト コンストラクターは組み込み型を初期化しますか?
コンパイラによって生成されたデフォルト コンストラクターはクラスのメンバーを初期化する役割を果たしますが、このルールは組み込み型には適用されません。暗黙的なデフォルト コンストラクターは、組み込み型メンバーを初期化しないままにします。
ただし、クラス インスタンスを初期化するための代替メカニズムがあります。
値の初期化
構文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 サイトの他の関連記事を参照してください。