这个有效的C ++是否可以初始化指向nullptr
的动态指针数组?
int x = 10;
int** p = new int*[ x ]{ };
答案 0 :(得分:2)
是的,代码有效且值初始化数组的每个元素。
对于标准参考,请参阅§5.3.4/ 17 [expr.new]
创建类型为T的对象的new-expression初始化该对象,如下所示:
-...
- 否则,根据8.5的初始化规则解释new-initializer以进行直接初始化。
然后§8.5/ 7 [dcl.init]
对T类型的对象进行值初始化意味着:
-...
- 如果T是数组类型,则每个元素都是值初始化的;
- 否则,对象被零初始化。
在这种情况下,最后一个子弹适用于每个数组元素。