Consultez le code suivant:Comment réinitialiser une union?
struct T {
int a;
union {
struct {
int a;
} s1;
struct {
char b[1024];
} s2;
};
};
int main() {
T x = T();
}
Depuis un constructeur explicite est appelée, le zéro-initialisation du code ci-dessus se termine-up tous les membres de données dans x.
Mais je voudrais avoir zéro-initialisé même si un explicit n'est pas appelé. Pour ce faire, une idée serait d'initialiser les membres de données dans leur déclaration, ce qui semble aller pour T :: a. Mais comment puis-je initialiser zéro toute la mémoire occupée par l'union en utilisant les mêmes critères?
struct T {
int a = 0;
union {
struct {
int a;
} s1;
struct {
char b[1024];
} s2;
};
};
int main() {
T x; // I want x to be zero-initialized
}
http://stackoverflow.com/questions/1069621/are-members-of-a-c-struct-initialized-to-0-by-default – Joe
ou simplement 'T x = {};' – Mehrdad