§8.5から
オブジェクトに初期化子が指定されていない場合、オブジェクトはデフォルトで初期化されます。初期化が実行されない場合、自動または動的な保管期間を持つオブジェクトの値は不確定です。[注:静的またはスレッドの保存期間を持つオブジェクトはゼロで初期化されます。3.6.2を参照してください。—エンドノート]
将来の参照のための更新:さらに、初期化されたデフォルトの意味は次のように定義されます
タイプTのオブジェクトをデフォルトで初期化するということは、次のことを意味します
。— Tが(おそらくcv修飾された)クラスタイプである場合(第9節)、Tのデフォルトコンストラクターが呼び出されます(Tにアクセス可能なデフォルトがない場合、初期化は不正な形式になります)コンストラクター) ;
— Tが配列型の場合、各要素はデフォルトで初期化されます。
—それ以外の場合、初期化は実行されません。
プログラムがconst修飾型Tのオブジェクトのデフォルトの初期化を要求する場合、Tはユーザー提供のデフォルトコンストラクターを持つクラス型でなければなりません。
さらに、これを参照して初期化された値とは異なります:-
タイプTのオブジェクトを値初期化するということは、次のことを意味します
。— Tがユーザー提供のコンストラクター(12.1)を持つ(おそらくcv修飾された)クラスタイプ(節9)の場合、Tのデフォルトコンストラクターが呼び出されます(そして初期化Tにアクセス可能なデフォルトコンストラクタがない場合、形式が正しくありません。
— Tがユーザー提供のコンストラクターのない(おそらくcv修飾された)非ユニオンクラスタイプである場合、オブジェクトはゼロで初期化され、Tの暗黙的に宣言されたデフォルトコンストラクターが自明でない場合、そのコンストラクターが呼び出されます。
— Tが配列型の場合、各要素は値で初期化されます。
—それ以外の場合、オブジェクトはゼロで初期化されます。