C++ 为什么有常量和非常量访问器?
为什么STL容器定义访问器的常量和非常量版本C++ 为什么有常量和非常量访问器?,c++,constants,getter,C++,Constants,Getter,为什么STL容器定义访问器的常量和非常量版本 定义const T&at(unsigned int i)const和T&at(unsigned int)而不仅仅是非const版本有什么好处?因为您无法在const向量对象上调用at 如果您只有非const版本,请执行以下操作: const std::vector<int> x(10); x.at(0); 可能重复的 const std::vector<int> x(10); std::vector<int
定义
const T&at(unsigned int i)const
和T&at(unsigned int)
而不仅仅是非const版本有什么好处?因为您无法在const
向量对象上调用at
如果您只有非const
版本,请执行以下操作:
const std::vector<int> x(10);
x.at(0);
可能重复的
const std::vector<int> x(10);
std::vector<int> y(10);
int z = x.at(0); //calls const version - is valid
x.at(0) = 10; //calls const version, returns const reference, invalid
z = y.at(0); //calls non-const version - is valid
y.at(0) = 10; //calls non-const version, returns non-const reference
//is valid