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

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

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

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

最佳答案

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

有关标准引用,请参阅§5.3.4/17 [expr.new]

A new-expression that creates an object of type T initializes that object as follows:
...
— Otherwise, the new-initializer is interpreted according to the initialization rules of 8.5 for direct-initialization.

然后是§8.5/7 [dcl.init]

To value-initialize an object of type T means:
...
— if T is an array type, then each element is value-initialized;
— otherwise, the object is zero-initialized.

在这种情况下,最后一个项目符号适用于每个数组元素。

关于c++ - C++11 初始化列表可以与动态数组一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25394665/

相关文章:

c++ - 我如何将可调用对象传递给函数作为参数

C++类继承 "expected class-name"错误

c++ - 为什么在 C++0x 或 Boost.Thread 中没有针对多个互斥锁的作用域锁?

c++ - 使用已删除的复制构造函数初始化抽象类

c++ - 如何自动化类声明?

c++ - 初始化列表中的抽象类init

具有复杂结构的 C++ 初始化列表

c++ - CUDA项目结构

c++ - 获取字体列表 (Win32)

C++ - 使用initializer_list作为参数的模板函数