c++ - enclosed - ¿Diferencia entre default-initialize e value-initialize?
initialize vector c++ 11 (2)
"initial-initialise" le da el valor predeterminado según lo especificado por el estándar, que podría ser basura .
"value-initialise" lo inicializa a un valor específico, uno establecido en el constructor, por ejemplo, u optimizado por el compilador.
Posible duplicado:
¿Qué significan las siguientes frases en C ++: zero-, default- and value-initialization?
Estaba leyendo esta respuesta , así que me encontré con la segunda palabra: value-initialize
. Inicialmente pensé que esto es lo mismo que default-initialize
pero el contexto me indica que estoy equivocado.
Entonces mi pregunta es:
¿Cuál es la diferencia entre default-initialize e value-initialize ?
Me gustaría entender la diferencia con algunos ejemplos.
De acuerdo con el estándar (8.5 / 4.5):
Para inicializar por defecto un objeto de tipo T significa:
- si T es un tipo de clase no POD, se llama al constructor predeterminado para T (y la inicialización está mal formada si T no tiene un constructor por defecto accesible);
- si T es un tipo de matriz, cada elemento se inicializa por defecto;
- de lo contrario, el objeto tiene cero inicialización.
Valorizar-inicializar un objeto de tipo T significa:
- si T es un tipo de clase (cláusula 9) con un constructor declarado por el usuario (12.1), entonces se llama al constructor predeterminado para T (y la inicialización está mal formada si T no tiene un constructor por defecto accesible);
- si T es un tipo de clase no sindical sin un constructor declarado por el usuario, entonces cada componente de datos no estáticos y de clase base de T tiene un valor inicializado; 96)
- si T es un tipo de matriz, entonces cada elemento tiene un valor inicializado;
- de lo contrario, el objeto tiene cero inicialización