【发布时间】:2015-07-01 15:16:55
【问题描述】:
让我们考虑以下简单的程序:
int main()
{
int *a = new int;
}
*a 的值为0 是否可靠。我不确定,因为原语没有默认初始化:
默认初始化 T 类型的对象意味着:
(7.1) — 如果 T 是(可能是 cv 限定的)类类型(第 9 条), 构造函数被考虑。适用的构造函数是 枚举(13.3.1.3),初始化器()的最佳选择是 通过重载决议(13.3)选择。构造函数因此 使用空参数列表调用 selected 来初始化 对象。
(7.2) — 如果 T 是数组类型,则每个元素都是默认初始化的。
(7.3) — 否则,不执行初始化。
我想说*a 没有初始化,所以访问它会导致UB。对吗?
【问题讨论】:
标签: c++ initialization