为什么定义num时初始化或者用初始化函数Stu_t都会导致报错? 是不是意味着 union 内所有的成员以及嵌套的所有成员都不能在定义时初始化和使用构造函数呢? 如果不让初始化则会不会导致内存里是随机数据呢? typedef struct Stu_t { int num; // 或者 int num = 0; Stu_t () { Num = 0; } } Stu; typedef struct message_t { union result_t { int aaa; Stu stu; } result; } message; int main() { message msg; return 0; } 对 union 内成员逐层嵌套的成员进行定义时初始化和使用构造函数验证,发现都会报错。