vectores una suma resueltos programacion matriz matrices llenar ingresar ejercicios datos como codigo arreglos c++ arrays initialization default-constructor

c++ - suma - ¿Construirá por defecto una matriz de enteros y la inicializará en cero?



matriz en c++ codigo (1)

Sí (destacando el mío):

(C ++ 03 8.5)

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-unión sin un constructor declarado por el usuario, entonces cada componente no-estático> de miembro de datos y clase base de T tiene valor inicializado

  • si T es un tipo de matriz, entonces cada elemento se inicializa en valor;

  • de lo contrario, el objeto tiene cero inicialización

...

Un objeto cuyo inicializador es un conjunto vacío de paréntesis, es decir, (), se inicializará en valor.

Si tengo una estructura con un miembro de la matriz y llamo explícitamente al constructor predeterminado de la matriz en el constructor de la estructura, ¿los elementos se construirán por defecto? (En el caso de una matriz de enteros, esto significaría obtener inicialización cero).

struct S { S() : array() {} int array[SIZE]; }; ... S s; // is s.array zero-initialized?

Una prueba rápida con gcc sugiere que este es el caso, pero quería confirmar que puedo confiar en este comportamiento.

(He notado que si no construyo la matriz de forma explícita en el constructor de la estructura, los elementos de la matriz tienen valores aleatorios).