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

来源:互联网 发布:监控图纸设计软件 编辑:程序博客网 时间:2024/05/20 16:10

先回答第一个问题:C++的有些重载运算符为什么要返回引用?事实上我们的重载运算符返回void 、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值那么我们什么情况下要返回对象的引用呢?
原因有两个:①允许进行连续赋值 ②防止返回对象(返回对象也可以进行连续赋值)的时候调用拷贝构造函数和析构函数导致不必要的开销,降低赋值运算符等的效率。对于第二点原因:如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把 *this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,会降低赋值函数的效率。

作者:郭无心
链接:https://www.zhihu.com/question/22821783/answer/65033250
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

阅读全文
0 0
原创粉丝点击