gpt4 book ai didi

c++ - 运算符重载 C++ 引用或值

转载 作者:搜寻专家 更新时间:2023-10-31 00:57:42 27 4
gpt4 key购买 nike

我看过很多教程并试图在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com