Ale*_*son 5 c++ iterator constants auto c++11
如果我只想按对象公开一个 const 迭代器:
class MyList
{
public:
const_iterator begin() const;
const_iterator end() const;
private:
iterator begin();
iterator end();
};
Run Code Online (Sandbox Code Playgroud)
看来我应该能够使用基于范围的 const 版本:
MyList list;
...
for(const auto & value : list)
{
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨begin并且end是私有的。为什么不使用const_iterator版本?
重载解析在访问检查之前完成,以避免仅通过更改访问说明符就神奇地破坏代码。
之后表达式(它的类型)发生了什么就被忽略了。如果需要,编译器会在之后尝试找到有效且明确的转换序列。
因此,begin与end用于非const-object被选择,然后用该大编译器绊private-sign。
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |