C++ 标准说(8.5/5):
默认初始化类型的对象
T意味着:
如果
T是非 POD 类类型(第 9 条),则调用 的默认构造函数(如果没有可访问的默认构造函数T,则初始化格式错误)。T如果
T是数组类型,则每个元素都是默认初始化的。否则,对象被零初始化。
使用此代码
struct Int { int i; };
int main()
{
Int a;
}
该对象a是默认初始化的,但显然a.i不一定等于 0 。这不与标准相矛盾吗,就像IntPOD 一样,不是数组?
编辑 从 更改为class,struct所以这Int是一个 POD。