使用情况:通常对类本身的运算符重载
如类nameclass的运算符函数名称operator op
如x,y都是类nameclass的生成的对象,如果重载并实现了operator op
我们可以做这样的计算x op y,编译器会自动翻译成如下x.operator op(y)
如op是重载的运算符是加法(+),那么可变成x+y,编译器会变成x.operator+(y)
计算顺序是:
x op y变成x=x op y,运算结果存入到x,
x.operator+(y)
第一个操作数是类的对象x,也就是隐含的对象指针this,
第二个操作数是参数y,对象X与的数据成员逐个一一相加,
返回结果:是计算完毕后返回到左边的对象,它返回的必须是对象,而不能是其它数据类型
.重载下标[]取值运算符实例
定义operator[]
class foo
{
private:
vector<int> data;
public:
int& operator[] (const size_t);
};
实现operator[]
int& foo::operator[](const size_t index)
{ return data[index]; }