输入迭代器是否必须具有const
取消引用运算符,或者仅仅是非常量版本也满足其要求?
问问题
507 次
1 回答
1
不。
例如“输入迭代器”。
这通常是从流中读取的。取消引用它会读取一个值并更改底层流。在使用 ++ 运算符之前,使用取消引用运算符再次无效。
http://www.sgi.com/tech/stl/InputIterator.html
根据评论进行编辑。
你问能不能?
当然,你可以用 C++ 做任何事情。
还是你问应该?
现在取决于哪个位是 const:
- 您的意思是应该通过 const 方法取消引用吗?
- 或者你的意思是返回的引用(对对象)是常量?
我个人认为这两个问题的答案是否定的。
我认为很确定这不会违反输入迭代器的约束(在上面的链接中定义)。
但是我认为返回一个对象的非成本引用是不明智的,如果用户对其进行了变异,则该对象也不会改变流所引用的底层对象(这违反了最小意外原则)。
总的来说,我认为你需要澄清你的问题。
如果您更详细地解释上下文并询问特定签名违反约束的天气,那么我可能会给出更好的答案。目前这个问题过于模糊,因此我只能以过于笼统的方式表达答案。
于 2012-11-17T03:37:29.693 回答