https://en.cppreference.com/w/cpp/language/new
double* p = new double[]{1,2,3};
在 cppreference 上看有这种初始化方式,但编译通不过,所以是上面写错了还是编译器实现问题?
1
MeteorCat 2019-05-07 00:29:02 +08:00 via Android
g++版本问题,看下是不是 c++11
|
2
wevsty 2019-05-07 00:51:33 +08:00
试了一下
GCC 9.1,MSVC 19.20 ,clang 8.0 都提示编译错误。 其中 MSVC 的提示很清楚 ``` <source>(2): error C3078: array size must be specified in new expressions ``` 应该是这种写法本身错误或者没有任何编译器选择支持。 |
3
feng0vx 2019-05-07 01:09:30 +08:00 via Android
隐约记得可以初始化前面几个,所以还是楼上说的那样,声明数组大小
|
5
lrxiao 2019-05-07 05:22:58 +08:00
大概是没有一个编译器实现了这种写法...这写法大概 03 就有了吧
|
6
mirrorman 2019-05-07 07:22:02 +08:00 via iPhone
new 的运算符如果没有重载成有列表初始化参数的函数那这个就是错误的,我觉得这个地方有点和 RAII 矛盾
|
7
iAcn 2019-05-07 07:38:58 +08:00 via Android
应该是没有给定动态数组的大小。
|
8
ylrshui 2019-05-07 08:31:36 +08:00 via iPhone
看清楚 cppreference 示例前的说明,意思是这种写法不可用
|
9
ylrshui 2019-05-07 08:32:35 +08:00 via iPhone
|
10
SeaRecluse 2019-05-07 08:51:39 +08:00
没有指定长度,怎么分配空间🐶
|
11
shfanzie 2019-05-07 08:51:43 +08:00
用支持 C++14 以上版本编译器就 OK 了。
|
12
dttzmm 2019-05-07 09:08:30 +08:00 via Android
@ylrshui is not optional 意思是不能是选填,就是说是必填项。此外,上面 auto 那个例子可是能够正常编译的。
|
13
missdeer 2019-05-07 09:30:19 +08:00
double* p = new double[3]{1,2,3};
|
14
wutiantong 2019-05-07 09:42:21 +08:00
楼上好多张口就来啊,我看可能是 cppreference 的一个勘误
|
15
turi 2019-05-07 14:29:03 +08:00
难道不是 1.0 2.0 3.0 ?
|