Code Bye

int &operator[](int i); int operator[](int i)const

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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明int &operator[](int i); int operator[](int i)const