1. 程式人生 > >關於C++中用new申請動態陣列的初始化的兩種方式

關於C++中用new申請動態陣列的初始化的兩種方式

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