如果我已经超负荷运营商+运营商和=我还需要重载运算符+ =这样的事情的工作:
MyClass mc1, mc2;
mc1 += mc2;
如果我已经超负荷运营商+运营商和=我还需要重载运算符+ =这样的事情的工作:
MyClass mc1, mc2;
mc1 += mc2;
运营商+ =不+和=的复合材料,因此,你需要显式重载它,因为编译器不知道建拼图为您服务。 但你仍然这样做能够从已定义/重载运营商受益,通过他们内部操作者+ =。
是的,你需要定义为好。
然而,常见的伎俩是定义operator+=
,然后实现operator+
在这方面,是这样的:
MyClass operator+ (MyClass lhs, const MyClass& rhs){
return lhs += rhs;
}
如果你这样做(实施+ =使用+)周围的其他方式,你的+ =运算符,它可能是一个问题,我的性能敏感的代码不必要的复制操作。
是的你是。
如果这里真正的问题是,“我不想写重复运营商的负载,请告诉我如何避免”,那么答案可能是:
http://www.boost.org/doc/libs/1_38_0/libs/utility/operators.htm
语法看起来有点繁琐,但。 正如我从来没有使用过它自己,我不能向你保证,这实在简单。