В каких случаях происходит инициализация нулями и в каких нет?
Ответ
Инициализация нулями (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
Комментариев нет:
Отправить комментарий