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