C++2003 以降、値の初期化とデフォルトの初期化があります。つまり:
struct Foo {
int i;
std :: string s;
};
Foo f1; // f1.s is default-constructed, f1.i is uninitialised
Foo f2 = Foo (); // f1.s is default-constructed, f1.i is zero
右?
今、私はこのクラスを持っているとします
class Bar : public Foo {
int n;
Foo f [SIZE];
public:
Bar ();
};
のコンストラクターを作成するとき、親クラスまたはメンバーBar
のいずれかをデフォルトまたは値で初期化したい場合があります。f[]
親を初期化するための選択は単純だと思います:
Bar :: Bar () : Foo (), n (-1) {} // Parent is value-initialised (Foo::i is zero)
Bar :: Bar () : n (-1) {} // Parent is default-initialised (Foo::i is undefined)
しかし、f[]
メンバーはどうですか?
- すべてのメンバーをデフォルトで初期化するにはどうすればよいですか?
- すべてのメンバーの値を初期化するにはどうすればよいですか?
- C++11 イニシャライザ リストを使用する場合、イニシャライザ リストのサイズが と異なるとどうなり
SIZE
ますか?