Страницы

Поиск по вопросам

среда, 3 октября 2018 г.

Нулевая инициализация

В каких случаях происходит инициализация нулями и в каких нет?


Ответ

Инициализация нулями (zero-initialization) применяется в трех случаях:
1) Переменные со статическим и потоковым временем хранения (static/thread storage duration), перед тем как для них производится любая другая инициализация. Сюда входят переменные, объявленные с помощью ключевых слов thread_local, static, а также глобальные переменные.
thread_local int a; int b; struct S { void f() { static int c; } static int d; }; int S::d;
2) При инициализации значением (value-initialization), если тип не является классом (class или struct), и не является массивом.
union U { int a; float b; }; void f(int, U);
f(int(), U());
3) Элементы массива char, для которых нет инициализаторов
char a[5] = "123"; // a[3] и a[4] будут использованы нулями.
Более подробно можно прочитать на cppreference

Комментариев нет:

Отправить комментарий