initialize enclosed brace c++ initialization

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