Establecer el valor inicial de un objeto en cero se denomina inicialización cero.
Sintaxis :
static T object; Tt = {} ; T {} ; char array [n] = " ";
La inicialización cero se realiza en las siguientes situaciones:-
- Cero se inicializa para cada variable nombrada con duración de almacenamiento local de subprocesos o estática que no está sujeta a una inicialización constante (desde C++ 14), antes de cualquier otra inicialización.
- Zero se inicializa como parte de la secuencia de inicialización de valor para tipos que no son de clase y para miembros de tipos de clase inicializados por valor que no tienen constructores.
- Cuando una array de caracteres se inicializa con un literal de string que es muy corto, el resto de la array se inicializa en cero.
Los efectos de la inicialización cero son:
- Si T es un tipo escalar, el objeto se inicializa al valor obtenido al convertir el literal entero 0 a T.
- Si T es un tipo de clase sin unión, cada miembro de datos no estático y cada subobjeto de clase base se inicializa en cero y el relleno se inicializa en cero bits.
- Si T es un tipo de unión, el primer miembro de datos con nombre no estático del objeto se inicializa en cero y el relleno se inicializa en cero bits.
- Si T es un tipo de array, cada elemento de la array se inicializa en cero.
- Si T es un tipo de referencia, no se realiza ninguna inicialización.
Puntos clave :
- Las variables estáticas y locales del subproceso primero se inicializan en cero y luego se inicializan nuevamente como se especifica en el programa, por ejemplo, al iniciar un programa, la estática local de función se inicializa primero en cero y luego se llama a su constructor cuando la función es entró por primera vez. Si no hay un inicializador para la declaración de una estática que no sea de clase, entonces la inicialización predeterminada no hace nada, dejando el resultado de la inicialización cero anterior sin modificar.
- Un puntero que se inicializa en cero se denomina puntero nulo, incluso si el valor del puntero nulo no es cero integral.
El siguiente programa ilustra la inicialización cero en C++:
CPP
// C++ code to demonstrate zero initialization #include <iostream> #include <string> struct foo { int x, y, z; }; double f[3]; // zero-initialized to three 0.0's int* p; // zero-initialized to null pointer value // zero-initialized to indeterminate value // then default-initialized to "" std::string s; int main(int argc, char* argv[]) { foo x = foo(); std::cout << x.x << x.y << x.z << '\n'; return 0; }
Producción:
000
Referencia : https://en.cppreference.com/w/cpp/language/zero_initialization
Publicación traducida automáticamente
Artículo escrito por Astha_Singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA