复合赋值与算子的区别

时间:2014-09-02 16:03:48

标签: c++ overloading add variable-assignment operator-keyword

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

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

1 个答案:

答案 0 :(得分:4)

就像你说的那样,operator + =就地工作(它会修改当前对象),而operator +返回一个新对象并保持其参数不变。

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