自由函数
friend A operator+(const A& Lrs, const A& Rrs);
A operator+(const A& Lrs, const A& Rrs)
{
A result(0, 0);
result.x = Lrs.x + Rrs.x;
result.y = Lrs.x + Rrs.y;
return result;
}
成员函数
A operator+(const A& rhs)const
{
A result(0, 0);
result.x = x + rhs.x;
result.y = y + rhs.y;
return result;
}
不要把这两个函数都写上!
优化:
自由函数(优化)
A operator+(const A& Lrs, const A& Rrs)
{
return A(Lrs.x + Rrs.x, Lrs.x + Rrs.y);
}
成员函数(优化)
A operator+(const A& rhs)
{
this->x+= rhs.x;
this->y+= rhs.y;
return *this;
}
优点:
1.
适应用户的不同使用
习惯
a = a+b ;
a += b;
a = a+b ;
a += b;
2.
可以去掉
friend
的声明
3.
便于更改数据成员