C ++ 11初始化列表可以与动态数组一起使用吗?

时间:2014-08-19 23:39:28

标签: c++ c++11 initializer-list

这个有效的C ++是否可以初始化指向nullptr的动态指针数组?

int x = 10;
int** p = new int*[ x ]{ };

1 个答案:

答案 0 :(得分:2)

是的,代码有效且值初始化数组的每个元素。

对于标准参考,请参阅§5.3.4/ 17 [expr.new]

  

创建类型为T的对象的new-expression初始化该对象,如下所示:
   - ...
   - 否则,根据8.5的初始化规则解释new-initializer以进行直接初始化。

然后§8.5/ 7 [dcl.init]

  

对T类型的对象进行值初始化意味着:
   - ...
   - 如果T是数组类型,则每个元素都是值初始化的;
   - 否则,对象被零初始化。

在这种情况下,最后一个子弹适用于每个数组元素。