使用new时的数组初始化

nht*_*rnm 5 c# c++ arrays initialization

在C#中,我可以这样做:

char[] a = new char[] {'a', 'a', 'a'};
Run Code Online (Sandbox Code Playgroud)

但我可以在C++中做类似的事情吗?我试过了:

char *a = new char [] {'a', 'a', 'a'};
Run Code Online (Sandbox Code Playgroud)

但它没有编译.

Ani*_*nge 6

为什么不这样做呢?:

char a[] = {'a', 'a', 'a'};
Run Code Online (Sandbox Code Playgroud)

还要避免完全使用数组.使用std::vector


Joh*_*itb 6

这是C++规范中的一个错误(它不允许这个简单的构造进行编译).你需要提供尺寸

char *a = new char [3] {'a', 'a', 'a'};
Run Code Online (Sandbox Code Playgroud)

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469.请注意,如果您使用类型名称括号,则它是type-id而不是new-type-id,因此在语法上允许您省略size表达式.所以你可以找到一个允许你说的实现

char *a = new (char[]){'a', 'a', 'a'};
Run Code Online (Sandbox Code Playgroud)

尽管很明显,这不是明确的意图(new段落中的一些规则可以被解释为禁止它).