const int *pint = new const int[10](2) ; //
出现error: error: parenthesized initializer in array new [-fpermissive]
编译环境如下:
请问这种初始化方式问什么不能通过?
而const int *pint = new const int[10]{1,2,3,4,5,6,7,8,9,10}
使用 --std=c++11 标准没有什么问题?
可能 Pint是指向一个连续区域的堆空间,对()仅仅是对一个参数的直接初始化 , 而new const int[] 应该是在对整体的初始话,所以在G++ 编译器认为 仅仅一个int的数字无法满足对所有数组的个数的分配。 //
但是{} 的分别初始化却是对 pint所指向的数组中的每一个元素进行初始化,
你这解释好厉害,能告诉我在 C++ 11 的文法中哪里提到了这种初始化语法吗?
@Launcher: 我猜的/坏笑
@菜鸟GG: C++ 11标准有这么一句话, 你可以在linux 环境下 看看
@菜鸟GG: 你贴图的语法是 C++ 11 针对 class 和 struct 保持一致的初始化语法增加的新语法,这有什么问题?我也不用去你的什么 linux 下看,随便在搜索引擎里搜索下 C++ 11,这些语法都有介绍。你提的问题是:
const int *pint = new const int[10](2) ; //
出现error: error: parenthesized initializer in array new [-fpermissive]
初始化方式问什么不能通过?
所以,我问你的是 C++ 11 中哪里提到了“new int[10](2)” 这种语法,从而让你写出这样的代码来,并且编译不通过后还让你觉得编译器不对?