kmi*_*las 1 c++ overloading brackets accessor mutators
关于在C++中重载括号,我的编译器使用mutator方法进行访问.谁能告诉我为什么?
1. const int & Cheese::operator [] (int i)const { return weight[i]; } //accessor
2. int & Cheese::operator [] (int i) { return weight[i]; } //mutator
Run Code Online (Sandbox Code Playgroud)
例如,下面的cout命令使用mutator函数定义 - 上面的#2 - 来访问数据.
Cheese cheddar;
cout << cheddar[2] << endl;
Run Code Online (Sandbox Code Playgroud)
为什么这不使用第一个函数 - 访问器 - 来获取数据?我认为,因为cout只是一个检索,它会在第一个开始.
编译器如何知道调用哪些内容?
编辑:为了完整性,通过mutator,我的意思是用作"setter",就像这样:
cheddar[2] = 100;
Run Code Online (Sandbox Code Playgroud)
两者合在一起如下:
cheddar[2] = cheddar[1];
Run Code Online (Sandbox Code Playgroud)
rhs只是一个"吸气剂".它只是检索cheddar [1]的值,不会改变任何东西,因此可以是const.相比之下,lhs括号过载切达[2]起到"定位器"的作用.值可以改变,函数返回值不能是常量.
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |