虽然我会写
int n[] {1, 2, 3};
我不会写
int *m = new int[] {1, 2, 3};
应该是
int *m = new int[3] {1, 2, 3};
这是什么原因?
最佳答案
请记住,new 实际上是 C++ 中的运算符。
这是因为new操作符是如何定义的;也就是说,它需要明确地将请求的内存大小作为输入参数。因此,它不会由初始化列表成员的数量推导出来。
关于c++ - 为什么初始化列表初始化需要堆分配数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664512/