复合赋值和运算符之间的区别



我想重载两个运算符:+=和+

它们之间的基本区别是什么?+=只是修改当前对象,+返回一个新对象?

就像您所说的,操作符+=在原地工作(它修改当前对象),而操作符+返回一个新对象并保持其参数不变。

对于类型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;
}

最新更新