zero initialization
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Устанавливает начальное значение объекта к нулю
Оригинал:
Sets the initial value of an object to zero
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Синтаксис
static T object ;
|
(1) | ||||||||
int () ;
|
(2) | ||||||||
char array [ n ] = "";
|
(3) | ||||||||
[править] Объяснение
Нулевая инициализация выполняется в следующих ситуациях:
Оригинал:
Zero initialization is performed in the following situations:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
Для каждого имени переменной со статическим или локальной памяти потока продолжительности, перед любой другой инициализации.
Оригинал:
For every named variable with static or thread-local storage duration, before any other initialization.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
В рамках Значение инициализации последовательности для не-класса типов и членов стоимости инициализируется класс типов, которые не имеют конструкторов.
Оригинал:
As part of Значение инициализации sequence for non-class types and for members of value-initialized class types that have no constructors.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3)
Когда персонаж массив инициализируется строковой литерал, который является слишком коротким, остальная часть массива равна нулю инициализирован.
Оригинал:
When a character array is initialized with a string literal that is too short, the remainder of the array is zero-initialized.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Эффект нулевой инициализации являются:
Оригинал:
The effects of zero initialization are:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Если
T
это скалярный тип, начальное значение объекта является неотъемлемой постоянной неявно преобразованы нуля доT
.Оригинал:IfT
is a scalar type, the object's initial value is the integral constant zero неявно преобразованы toT
.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Если
T
это не состоящих в профсоюзе типа класса, все базовые классы и не статические данные члены равны нулю инициализирован, и все обивка инициализируется нулевыми битами. Конструкторов, если таковые имеются, игнорируются.Оригинал:IfT
is an non-union class type, all base classes and non-static data members are zero-initialized, and all padding is initialized to zero bits. The constructors, if any, are ignored.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Если
T
является объединением типа, первый нестатических имени члена данных равна нулю инициализируется и вся обивка инициализируется нулевыми битами.Оригинал:IfT
is a union type, the first non-static named data member is zero-initialized and all padding is initialized to zero bits.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Если
T
является типом массива, каждый элемент равен нулю инициализированОригинал:IfT
is array type, each element is zero-initializedТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
- Если
T
это ссылочный тип, ничего не делается.Оригинал:IfT
is reference type, nothing is done.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Заметки
Статической и потоков локальных переменных первого нуля инициализации, а затем инициализируется заново, как указано в программе, например, Функция-местный статического первый нулевой инициализируется при запуске программы, а затем его конструктор вызывается, когда функция впервые вошел. Если заявление о не-класс не имеет статической инициализации, то инициализации по умолчанию ничего не делает, оставляя результате ранее нулевого инициализации немодифицированных.
Оригинал:
The static and thread-local variables are first zero-initialized and then initialized again as specified in the program, e.g. a function-local static is first zero-initialized at program startup, and then its constructor is called when the function is first entered. If the declaration of a non-class static has no initializer, then default initialization does nothing, leaving the result of the earlier zero-initialization unmodified.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Нуль-указатель инициализируется нулевым значением указателя в своем роде, даже если значение нулевого указателя не является целым нуля.
Оригинал:
A zero-initialized pointer is the null pointer value of its type, even if the value of the null pointer is not integral zero.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Пример
Запустить этот код
#include <string> double f[3]; // zero-initialized to three 0.0's int* p; // zero-initialized to null pointer value std::string s; // zero-initialized to indeterminate value // then default-initialized to "" int main(int argc, char* argv[]) { static int n = argc; // zero-initialized to 0 // then copy-initialized to argc delete p; // safe to delete a null pointer }