我可以为一个构造函数使用一组整数,为另一个构造函数使用一个整数吗?
同一 IntList
类中是否允许使用以下构造函数?
IntList(int length);
IntList(int data[]);
Are the following constructors allowed in the same IntList
class?
IntList(int length);
IntList(int data[]);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这很好,但请注意,后者与 int* data 相同,它是一个指针而不是一个数组。
数组是不可复制的,必须通过引用传递:
您还可以使用模板获取任何大小的数组:
但您的方法最终是非正统的。如果您想使用一系列数据进行初始化,请使用迭代器:
现在您可以从
begin
迭代到end
,它可以是来自任何类型容器的迭代器,例如数组,std::vector
、std::map
等等。但无论如何,您应该使用
std::vector
而不是IntList
。That's fine, but note that latter is the same as
int* data
, which is a pointer and not an array.Arrays are non-copyable and must be passed by reference:
You can also take an array of any size using templates:
But your approach is ultimately unorthodox. If you want to initialize with a range of data, use iterators:
Now you can iterate from
begin
toend
, which can be iterators from any kind of container, like arrays,std::vector
's,std::map
's and more.But you should be using
std::vector<int>
instead ofIntList
anyway.是的,它们是不同的类型,所以这是有效的。
Yes, they're different types so this is valid.
然而,这不能作为另一种方法。
两者的论点不同。
length
的类型为int
,data
的类型为int[]
,并且是构造函数的示例 超载。根据您对如何使用它的评论 - 这应该作为一个例子
How ever, this not allowed to have as another method.
Both the arguments are different.
length
is of typeint
anddata
is of typeint[]
, and is an example of constructor overloading.Upon your comment as to how use it - This should serve as an example