运算符重载的一个原则就是:与内置类型的运算符具有一致的性质。
对于赋值操作符,内置类型可以连锁赋值,即
x=y=z=1;
为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左侧实参。
class A{
public:
A& operator=(const A& a)
{
...
return *this;
}
A& operator+=(const A& a)
{
...
return *this;
}
};
即所有与赋值相关的运算都得这样做。
注意:由于要返回*this,所以赋值运算符只能重载为类的成员,而不能重载为友元!!!