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).¿Construirá por defecto una matriz de enteros con 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.
(I han dado cuenta de que si no explícitamente default-construir la matriz en el constructor estructura, los elementos de la matriz tienen valores aleatorios.)
¿Alguna razón en particular por la que no está utilizando 'std :: vector'? – AJG85
@ AJG85: Sí. Si asigno una matriz de 100000 de estas estructuras, me gustaría que resulte en una única asignación de 100000 * TAMAÑO de bytes, en lugar de una única asignación de 100000 * tamaño de (int *) bytes más 100000 asignaciones de TAMAÑO de bytes. (Por otro lado, yo * podría * ser un poco más C++ - y usando 'boost :: array' (o' std :: array' en C++ 0x)). – HighCommander4
@ High: Su modelo mental de 'std :: vector' es completamente incorrecto. Tiene una sobrecarga constante de aproximadamente 12 bytes más algunos gastos generales en la tienda libre. –
fredoverflow