1. ホーム
  2. c++

[解決済み] 構造体のデフォルト値を初期化する

2022-03-08 07:37:10

質問

C++の構造体の一部の値のみを初期化する必要がある場合、これは正しいでしょうか?

struct foo {
    foo() : a(true), b(true) {}
    bool a;
    bool b;
    bool c;
 } bar;

を1つ持つことになると考えてよいのでしょうか? struct という項目があります。 bar という要素で bar.a = true , bar.b = true と未定義の bar.c ?

解決方法は?

はい。 bar.abar.b はtrueに設定されますが bar.c は未定義です。 ただし、特定のコンパイラではfalseに設定されます。

実例をこちらでご覧ください。 構造体

C++規格8.5.12項による。

初期化が行われない場合 自動的または動的な保存期間を持つオブジェクトは不定な値を持つ

プリミティブな組み込みデータ型( ブール char, wchar_t, short, int, long, float, double, long double) のみです。 グローバル 変数(すべての静的ストレージ変数)は、明示的に初期化されていない場合、デフォルト値として0を取得します。

もし、未定義の bar.c と同じように初期化する必要があります。 bar.abar.b .