4 ответов:
Да, эта форма инициализации поддерживается всеми компиляторами c++. Это часть языка C++. На самом деле, это идиома, которая пришла в C++ из языка C. На языке Си
= { 0 }идиоматический универсальный нуль-инициализатор. Это тоже почти случай в C++.так как этот инициализатор является универсальным, для
boolмассив тебе не нужен другой "синтаксис".0работает как инициализатор дляboolтип также, так чтоbool myBoolArray[ARRAY_SIZE] = { 0 };гарантированно инициализирует весь массив с помощью
false. А такжеchar* myPtrArray[ARRAY_SIZE] = { 0 };in гарантированно инициализирует весь массив с нулевыми указателями типа
char *.если вы считаете, что это улучшает читаемость, вы можете, конечно, использовать
bool myBoolArray[ARRAY_SIZE] = { false }; char* myPtrArray[ARRAY_SIZE] = { nullptr };но дело в том, что
= { 0 }вариант дает вам ровно тот же результат.однако, в C++
= { 0 }может не работать для всех типов, как перечисление типов, например, которые не могут быть инициализированы с integral0. Но C++ поддерживает более короткую формуT myArray[ARRAY_SIZE] = {};т. е. просто пустая пара
{}. Это будет по умолчанию-инициализировать массив любого типа (при условии, что элементы позволяют инициализацию по умолчанию), что означает, что для базовых (скалярных) типов весь массив будет правильно инициализирован нулем.
обратите внимание, что '=' является необязательным в синтаксисе универсальной инициализации C++11, и обычно считается лучшим стилем для записи:
char myarray[ARRAY_SIZE] {0}
Да, я считаю, что он должен работать, и он также может быть применен к другим типам данных.
для массивов классов, однако, если в списке инициализаторов меньше элементов, чем элементов в массиве, конструктор по умолчанию используется для остальных элементов. Если для класса не определен конструктор по умолчанию, список инициализаторов должен быть полным - то есть для каждого элемента массива должен быть один инициализатор.
вы можете объявить массив в C++ такими способами. Если вы знаете размер массива, то вы должны объявить массив для: целое число:
int myArray[array_size];Дубль:double myArray[array_size];Символ и строка:char myStringArray[array_size];Разница между char и string заключается в следующемchar myCharArray[6]={'a','b','c','d','e','f'}; char myStringArray[6]="abcdef";если вы не знаете размер массива, то вы должны оставить массив пустым, как показано ниже.
целое число:
int myArray[array_size];Double:
double myArray[array_size];
Comments