使用 new 分配的数组不能有初始化器吗?
在我目前正在阅读的书中(Herbert Schildt 的C++ Complete Reference)中,它说使用 new
分配的数组不能有初始化程序。
我不能使用 new
初始化动态分配的数组吗?如果不是的话原因是什么?
In the book I am reading at the moment (C++ Complete Reference from Herbert Schildt), it says that no array allocated using new
can have an initializer.
Can't I initialize a dynamically allocated array using new
? If not whats the reason for it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这并不完全正确(您几乎肯定应该为自己找到一个替代参考),您可以使用一个空的初始化程序(
()
),它将值初始化数组,但是是的,使用 array new 时不能单独初始化数组元素。 (参见 ISO/IEC 14882:2003 5.3.4 [expr.new] / 15)例如,
没有根本原因不允许使用更复杂的初始化程序,只是 C++03 没有语法构造。在 C++ 的下一个版本中,您将能够执行类似的操作。
That's not quite true (you should almost certainly get yourself an alternative reference), you are allowed an empty initializer (
()
) which will value-initialize the array but yes, you can't initialize array elements individually when using array new. (See ISO/IEC 14882:2003 5.3.4 [expr.new] / 15)E.g.
There's no fundamental reason not to allow a more complicated initializer it's just that C++03 didn't have a grammar construct for it. In the next version of C++ you will be able to do something like this.
这本书是正确的;你不能拥有,
其背后没有可理解的原因。这就是为什么我们在 C++0x 中有数组初始值设定项。
The book is correct; you cannot have,
There is no understandable reason behind it. That's why we have initializers for array in C++0x.
我认为这本书是正确的,一般来说你不能用当前版本的 C++ 做到这一点。
但是您可以使用 boost::assign 来实现动态数组,请参见下文
I think the book is correct, in generally you cannot do that with current version of c++.
But you can do that with boost::assign to achieve a dynamic array, see below