我看过很多教程并试图在 stackoverflow 上找到答案但没有成功。
我不确定的是;在重载运算符时,是否有一些实践是按值返回还是按引用返回?
例如
Class &operator+(){
Class obj;
//...
return obj;
}
或相同的东西,但按值(value)
Class operator+(){
Class obj;
//...
return obj;
}
我想提一下,我注意到在几乎 90% 的情况下,当返回相同的对象 (*this
) 时,会引用返回的相同对象。有人也可以解释为什么会这样吗?
最佳答案
从operator+
按引用返回的第一个选项是错误的,因为你是按引用返回局部对象,但局部对象在运算符函数体结束后不复存在。一般:
+=
或-=
等变异运算符通过引用返回,因为它们返回变异对象本身(通过:return *this;
)+
或-
等普通运算符应该按值返回,因为需要构造一个新对象来保存结果。
关于c++ - 运算符重载 C++ 引用或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908345/