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