c++ primer plus 中的,本人写了验证了下,还是这个问题,代码如下
class A{
private:
int a[10];
public:
A(){
for(int i = 0; i < 10; i++){
a[i] = i;
}
}
int & operator[](int i){
cout << "int & []" << endl;
return a[i];
}
int operator[](int i)const{
cout << "int [] const" << endl;
return a[i];
}
};
int main(void){
A a;
cout << a[1] << endl;
a[1] = 110;
cout << a[1] << endl;
int xxx = a[5];
cout << xxx << endl;
a[0] = a[1];
return 0;
}
讲道理的话,xxx = a[5] 和 a[0] = a[1];这句会输出 int [] const
但是结果都是 int & []
那样 int operator[](int i)const; 就没用了把,为什么还要写?
解决方案
5
把const方法看做一系列,这一系列可以互相调用,提高程序健壮性。
15
再加一个函数,并调用一下看看情况怎么样
void demo(const A &a){
for(int i=0;i<10;i++)
cout <<a[i]
}
int main(){
......
A a;
demo(a);
return 0;
}