1. 下面的例子中,实现了在数组类中,如何重载 [] 运算符,使这个数组类看起来“更像一个数组”。
2.函数定义写法步骤:
(1)首先要承认运算符重载实质就是函数调用。
(2)承认operator[] 就是函数名。
(3)将参数列表补齐,比如a[ i ], 那么i 就是参数;==> operator(int i);
(4) 根据情况填写返回值。这一点需要强调(在下面的例子中注释部分也有体现)。需要强调的是:
运算符重载函数体其实可以有 三种返回值的 写法,分别为:
1. void Array :: operator[](int i)
返回void, 那么cout << a1[i] <<" "; 这句代码将无法实现,所以这种写法pass。
2. int Array :: operator[](int i)
返回整形的一个数值,那么cout << a1[i] <<" ";这句话就可以正常实现了,但是例子中还有这样一句代码,
a1[i] = i; 也就是说在给数组元素赋值时,[ ] 重载函数的返回值作为左值被赋值为 i。那么 int Array :: operator[](int i)
返回一个整型数值,相当于常量给常量赋值,所以会出现左值无效的错误,而第三种返回值写法正