static void MyClassMethod(
std::list<AClass> & AnObject,
const std::list<AClass>::const_iterator & BeginningPoint);
在我的代码中,我传递了 const
STL 对象的 const_iterator
。感觉其中一个常数是多余的。
如果我只删除 const
关键字,或者如果我只将 const_iterator
更改为 iterator
,这有什么不同?
最佳答案
const_iterator
意味着您不能修改它“指向”的对象(迭代器具有指针语义)。 const
const_iterator
意味着您不能修改迭代器本身。
所以:
const std::list<AClass>::const_iterator it = smth;
it = smthElse;
是非法的,并且
std::list<AClass>::const_iterator it = smth;
it->nonConstMethodOfAClass();
是非法的。
关于c++ - 传递 `const` 作为参数时是否需要写 `const_iterator` 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107843/