为什么运算符重载返回值使用&?

事实上我们的重载运算符返回void 、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值

那么我们什么情况下要返回对象的引用呢?
原因有两个:
①允许进行连续赋值
②防止返回对象(返回对象也可以进行连续赋值)的时候调用拷贝构造函数和析构函数导致不必要的开销,降低赋值运算符等的效率。

对于第二点原因:如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把 *this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,会降低赋值函数的效率。



作者:wuxinliulei
链接:https://www.zhihu.com/question/22821783/answer/65033250
来源:知乎
 

猜你喜欢

转载自blog.csdn.net/qq_26079093/article/details/92991710
今日推荐