Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么有常量和非常量访问器?_C++_Constants_Getter - Fatal编程技术网

C++ 为什么有常量和非常量访问器?

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

为什么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> 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