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;
}