ty.*_*ty. 3 c++ operator-overloading
更一般地说,我应该让运营商超载?我知道重载+=是一件好事,因为扩展a = a + b创建了一个临时对象,而重载+=可以避免这种情况.会+=是没有有效地超载使用我的重载运算符?
如果你没有超载+=它将不会被定义; 你将无法使用它.
我个人建议你提供它,因为+=如果有的话+,任何人都可能期望这是可用=的.
我还建议你使用Boost.Operators来重载应该根据其他人自动生成的运算符.
实现operator+,支持代码重用的最佳方法是
class Foo
{
Foo(Foo const&); // Implemented
Foo& operator+=(Foo const& rhs)
{
// Implement all the addition-specific code here
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
然后
Foo operator+(Foo x, Foo const& y)
{
x += y; return x;
}
Run Code Online (Sandbox Code Playgroud)
如果你必须做一个右侧的副本(由于实现特定的原因,通常不是这种情况),你可以在两个operator+=和第二个参数中传递值operator+.