déclarant un tableau de struct:un compilateur généré constructeur par défaut en C++
struct Tables {
int i;
int vi[10];
Table t1;
Table vt[10];
};
Tables tt;
en supposant qu'un contructor Deault par l'utilisateur est défini pour le tableau.
ici tt.t1 sera initialisé en utilisant le constructeur par défaut pour Table, ainsi que chaque élément dans tt.vt. D'autre part, tt.i et tt.vi ne sont pas initialisés car ces objets ne sont pas de type classe. Par contre, tt.i et tt.vi ne sont pas initialisés. Donc nous restons avec un objet semi-initialisé tt.
si j'ai bien compris - si tt.i ou tt.vi ne seront pas initialisés explicitement dans le code, après la création de tt, une erreur sera générée si nous essayons d'en lire une valeur?
2) Quelqu'un peut-il m'expliquer, pourquoi les concepteurs de cpp ne voulaient pas simplement initialiser les types int intégrés et int [] à zéro?
Je suppose que le constructeur par défaut (même s'il s'exécute) ne fait rien. –
Tout est une question de coût. Les développeurs C++ ne veulent pas payer le coût de l'initialisation s'ils n'en ont pas. Voir: http://stackoverflow.com/questions/1910832/c-why-arent-pointers-initialized-with-null-by-default/1910992#1910992 –