struct Foo
{
char name[10];
int i;
double d;
};
Я знаю, что я могу обнулить инициализировать все члены такого типа POD с:Zero-инициализация типов POD
Foo foo = {0};
Могу ли я еще больше упростить это:
Foo foo = {};
Как встроенные массивы? (int arr[10] = {};
)
Я не спрашиваю, когда инициализируется с {0}
, будут члены, кроме первого, равны нулю инициализирован. Я знаю, что ответ на этот вопрос - да. Я спрашиваю, можно ли синтаксически исключить первый 0
.
Большинство учебников я нашел на эту тему предлагает использовать {0}
, никто не используя {}
, например, this guide, и это объясняется как Это работает, потому что агрегированные правила инициализации являются рекурсивными;, что дает больше путаницы, чем объяснение.
@JoachimPileborg: Это ужасно вводит в заблуждение. 'int n;' is "как построение по умолчанию", но не устанавливается в ноль. Скорее всего, что '' {} 'похоже на инициализацию данных инициализацией данных. –