考虑以下代码:
struct T {
int a;
union {
struct {
int a;
} s1;
struct {
char b[1024];
} s2;
};
};
int main() {
T x = T();
}
由于调用了显式构造函数,因此上述代码最终将 x 中的所有数据成员初始化为零。
但是即使没有调用显式,我也希望将 x 初始化为零。要做到这一点,一个想法是在声明中初始化数据成员,这对 T::a 来说似乎是可以的。但是如何使用相同的标准对联合占用的所有内存进行零初始化呢?
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
}