c++primer plus的P540
首先需要解释的是 取址符号 '&',第一个operator 前的类型是double & ,也就是说,
Student a;
a[0] = 1.1;
那么 a对象里面的scores[0]的值就会真的被改变.
这样可能不明显我们换一个函数你就有感觉了
class Student
{
public:
int id[20];
int& at(int x)
{
return id[x%20];
}
};
int main(void)
{
Student a;
a.at(0) = 4;
cout<< a.id[0];
return 0;
}
这是第一个函数的作用,就是让**外部能使用运算符直接修改这个对象里面的值**,而不是使用 一个函数setScores(int index,double value);
第二个后面加上了const,也就意味着这个函数与上一个函数不一致,注意这并不是重载,在编译器里认为这两个函数是不一样的函数,const表示他可以被const 属性的对象调用;
同时也是因为重载函数不允许传参一致但返回值类型不一致;
那么加上这个关键字之后的作用是什么呢?
作用就是: 这个函数内做的所有操作都不能改变this->
里面的任何值,调用方法也只能调用const 后缀的方法,但是相对的如果我们 定义了一个变量const Student a
,那么我使用 a[0]
那么就只能是第二个函数.
不知道这样解释你明白了么