超载+ =在C + +(Overloading += in c++)

2019-06-25 06:26发布

如果我已经超负荷运营商+运营商和=我还需要重载运算符+ =这样的事情的工作:

MyClass mc1, mc2;
mc1 += mc2;

Answer 1:

运营商+ =不+和=的复合材料,因此,你需要显式重载它,因为编译器不知道建拼图为您服务。 但你仍然这样做能够从已定义/重载运营商受益,通过他们内部操作者+ =。



Answer 2:

是的,你需要定义为好。

然而,常见的伎俩是定义operator+= ,然后实现operator+在这方面,是这样的:

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

如果你这样做(实施+ =使用+)周围的其他方式,你的+ =运算符,它可能是一个问题,我的性能敏感的代码不必要的复制操作。



Answer 3:

是的你是。



Answer 4:

如果这里真正的问题是,“我不想写重复运营商的负载,请告诉我如何避免”,那么答案可能是:

http://www.boost.org/doc/libs/1_38_0/libs/utility/operators.htm

语法看起来有点繁琐,但。 正如我从来没有使用过它自己,我不能向你保证,这实在简单。



文章来源: Overloading += in c++