【发布时间】:2014-09-12 08:44:52
【问题描述】:
struct Foo
{
char name[10];
int i;
double d;
};
我知道我可以使用以下方法对此类 POD 类型的所有成员进行零初始化:
Foo foo = {0};
我可以进一步简化为:
Foo foo = {};
喜欢原生数组? (int arr[10] = {};)
我不是在用{0} 初始化时询问,除了第一个成员之外的成员是否会被零初始化。我知道这个问题的答案是肯定的。我在问第一个0 是否可以在语法上省略。
我在这个主题上找到的大多数教程都建议使用{0},没有使用{},例如this guide,它被解释为这是因为聚合初始化规则是递归的; ,这比解释更令人困惑。
【问题讨论】:
-
@JoachimPileborg:这非常具有误导性。
int n;是“像默认构造”,但不设置为零。而是“{}就像对数据进行值初始化”。
标签: c++ initialization