首页 新闻 赞助 找找看

关于new 对象问题,求大神指点

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-07-24 12:24

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 标准没有什么问题?

Rocky_Ansi的主页 Rocky_Ansi | 菜鸟二级 | 园豆:210
提问于:2015-07-23 22:45
< >
分享
所有回答(1)
0

可能 Pint是指向一个连续区域的堆空间,对()仅仅是对一个参数的直接初始化 ,  而new const int[] 应该是在对整体的初始话,所以在G++ 编译器认为 仅仅一个int的数字无法满足对所有数组的个数的分配。    //

但是{} 的分别初始化却是对 pint所指向的数组中的每一个元素进行初始化,  

Rocky_Ansi | 园豆:210 (菜鸟二级) | 2015-07-24 09:09

你这解释好厉害,能告诉我在 C++ 11 的文法中哪里提到了这种初始化语法吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 11:43

@Launcher: 我猜的/坏笑

支持(0) 反对(0) Rocky_Ansi | 园豆:210 (菜鸟二级) | 2015-07-24 11:59

@菜鸟GG:  C++ 11标准有这么一句话, 你可以在linux 环境下 看看

支持(0) 反对(0) Rocky_Ansi | 园豆:210 (菜鸟二级) | 2015-07-24 12:07

@菜鸟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)” 这种语法,从而让你写出这样的代码来,并且编译不通过后还让你觉得编译器不对

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 13:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册