在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特性。