我想重载两个运算符:+=和+
它们之间的基本区别是什么?+=只是修改当前对象,+返回一个新对象?
就像您所说的,操作符+=在原地工作(它修改当前对象),而操作符+返回一个新对象并保持其参数不变。
对于类型T
,实现它们的常见方法如下:
// operator+= is a member function of T
T& T::operator+=(const T& rhs)
{
// perform the addition
return *this;
}
// operator+ is a free function...
T operator+(T lhs, const T& rhs)
{
// ...implemented in terms of operator+=
lhs += rhs;
return lhs;
}