Начиная с 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
?