关于C++中用new申请动态数组的初始化的两种方式

来源:互联网 发布:电脑没有网络连接 编辑:程序博客网 时间:2024/06/01 08:02

在C++11中引进了这一新功能,即用new申请动态数组时可以直接初始化,形式如下:int* p = new int[cnt]();其中cnt长度和int类型都可以自己定义。

我发现的问题是:

在VC编译器中使用int* p = new int[cnt]();和int* p = new int[cnt]{};两种方式都可以,而且可以用int* a = new int[10] { 1,2,3,4,5,6,7,8,9,10 };这个方式给每个成员赋值。

而用mingw,也就是g++编译器时,不支持int* p = new int[cnt]{};提示的错误是“extended initializer lists only available with -std=c++0x or -std=gnu++0x”。

也就是说{}是()的一种扩展方式,最好统一用(),避免掉坑。

同时这种初始化方式是C11的新特性,需要确认你的GCC编译器支持C11特性。


1 0