首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用new时的数组初始化

使用new时的数组初始化
EN

Stack Overflow用户
提问于 2013-02-11 01:11:15
回答 6查看 169关注 0票数 5

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

代码语言:javascript
复制
char[] a = new char[] {'a', 'a', 'a'};

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

代码语言:javascript
复制
char *a = new char [] {'a', 'a', 'a'};

但是它不能编译。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-11 01:27:18

这是C++规范中的一个错误(它不允许编译这个简单的构造)。您需要提供大小

代码语言:javascript
复制
char *a = new char [3] {'a', 'a', 'a'};

参见http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469。请注意,如果您将类型名称括起来,它是一个type-id,而不是一个new- type -id,因此在语法上允许您省略size表达式。因此,您也许能够找到一种实现,它允许您

代码语言:javascript
复制
char *a = new (char[]){'a', 'a', 'a'};

虽然很明显,这不是明确的意图,这是可能的(并且new段落中的一些规则可以解释为禁止它)。

票数 6
EN

Stack Overflow用户

发布于 2013-02-11 01:13:01

为什么不这样做呢?

代码语言:javascript
复制
char a[] = {'a', 'a', 'a'};

也要避免完全使用数组。使用std::vector

票数 6
EN

Stack Overflow用户

发布于 2013-02-11 01:14:45

您可能不想在C++中使用数组。请改用std::vector

你甚至可以将其初始化为3‘a。

代码语言:javascript
复制
std::vector<char> vectorOfChars(3, 'a');

如果你的编译器支持C++11,你甚至可以使用初始化器列表。

代码语言:javascript
复制
std::vector<char> vectorOfChars{'a', 'a', 'a'};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14800281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档