如果函数的返回值要当左值,那么必须返回一个引用:
class Array
{
private:
int mLength;
int* mSpace;
public:
Array(int length)
{
if (length < 0)
{
length = 0;
}
mLength = length;
mSpace = new int[mLength];
}
Array(const Array& obj)
{
mLength = obj.mLength;
mSpace = new int[mLength];
for (int i = 0; i < mLength; i++)
{
mSpace[i] = obj.mSpace[i];
}
}
int length()
{
return mLength;
}
void setData(int index, int value)
{
mSpace[index] = value;
}
int getData(int index)
{
return mSpace[index];
}
~Array()
{
mLength = -1;
delete[] mSpace;
}
public:
int& Array ::operator[](int i)
{
return mSpace[i];
}
};
首先定义对象:
Array a1(10);
重载之后:
a1[i] = i;
其中a1[i ] 是一个函数
这里写代码片
如果 int & Array ::operator[]( int i) 返回的不是引用的话,那么 a1 [ i ] 无法作为左值。