【发布时间】:2011-11-24 11:26:47
【问题描述】:
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。
【问题讨论】:
-
"显然 a.i 不一定等于 0" 为什么? “否则,对象被零初始化。”。
-
您正在阅读过时的规范。在最新的规范中,默认初始化将使您的值未初始化
-
@JohannesSchaub-litb 你能显示更新后的文字吗?
标签: c++ initialization c++03