答案 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;
}
您制作副本,对该副本进行操作并将其返回。