下标操作符 [ ] 常用于在容器类型中以下标方式获取元素
下标运算符重载函数只能定义成员函数:
类型& operator[](形参)
{
}
在 C++ 中,在重载下标运算符 “[ ]” 时,认为它是一个双目运算符,例如 X[Y] 可以看成:
[ ]-----双目运算符;
X-----左操作数;
Y-----右操作数。
其相应的运算符重载函数名为 operator[ ]。
假设 X 是某一个类的对象,类中定义了重载“[ ]”的 operator[ ] 函数,则表达式:X[Y];
可被解释为:X.operator[](Y);
注意:形参在此表示下标,C++ 规定只能有一个参数。
#include<iostream>
#include<cstdlib>
using namespace std;
class Array
{
int* arr;
size_t len;
public:
Array(size_t len):len(len)
{
arr=new int[len];
}
int& operator[](int i)
{
if(i<0 || i>=len)
{
cout<<"下标错误!"<<endl;
exit(0);
}
return arr[i];
}
};
int main()
{
Array arr(100);
int j=10;
for(int i=0;i<10;i++)
{
arr[i]=j;
j++;
cout<<arr[i]<<endl;
}
}
重载下标运算符“[ ]”时,返回一个 int 型的引用,可使重载的“[ ]”用在赋值语句的左边,因而在 main 函数中,ve[i] 可以出现在赋值运算符的任何一边,使编程更灵活。