例如,如果我重载了 + 运算符
myClass & operator + (const myClass & rhs)
并且还重载了 = 运算符
myClass & operator = (const myClass & rhs)
两个运营商都工作正常。我可以在 += 运算符重载中使用这个重载运算符吗?
myClass & operator += (const myClass & rhs){
*this = *this + progA;
return *this;
}
上面的代码工作正常。我只是想知道这是否是良好的代码编写习惯,或者我应该重新使用前面两个实现中的 += 运算符重载的代码。
你可以这么做。然而,更常见的是实施operator+
using operator+=
而不是相反。
myClass & operator += (const myClass & rhs) { ... )
// Return by value.
// const member function.
myClass operator + (const myClass & rhs) const
{
myClass ret = *this; // Uses copy constructor, not assignment.
return ret += rhs;
}
界面
myClass & operator + (const myClass & rhs);
不是惯用的,因为你不能做相当于
int a = 10 + 20;
Using
MyClass a = MyClass(args...) + MyClass(args...);
不起作用,因为 RHS 中的第一个对象是临时对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)