首页 > 解决方案 > 为什么数组没有统一的初始化程序?

问题描述

假设我想用数组动态分配堆:

auto my_arr = new int[3] {3, 4, 5};

for (int i = 0; i < 3; i++)
    std::cout << my_arr[i] << ' ';

delete[] my_arr;

输出:

3 4 5

当我不new喜欢使用时:

auto my_arr = int[3]{3, 4, 5};

它抛出一个错误。

备择方案:

auto my_arr = std::array{3, 4, 5}; // deduces into `std::array<int, 3>`
auto my_arr2 = {3, 4, 5};          // deduces into `std::initializer_list<int>`

new当允许表达式时,内置数组没有初始化(类构造函数)的原因是什么?

标签: c++arraysinitialization

解决方案


推荐阅读