如果+超载,则重载+ =运算符?

时间:2010-08-19 20:33:33

标签: c++ operator-overloading

  

可能重复:
  Overloading += in c++

我是否需要重载+ =运算符,如果我重载+或编译器知道该怎么做?

感谢。

1 个答案:

答案 0 :(得分:2)

你需要超载两者。

但是,如果您颠倒顺序,则可以重复使用代码:

struct foo
{
    // this is the "core" operation, because it's mutating (changes this)
    foo& operator+=(const foo&)
    {
        // ...
        return *this;
    }

};

foo operator+(const foo& lhs, const foo& rhs)
{
    foo ret = lhs;
    ret += rhs;        
    return ret;
}

您制作副本,对该副本进行操作并将其返回。