为什么运算符重载返回值使用&?
来源:互联网 发布:监控图纸设计软件 编辑:程序博客网 时间:2024/05/20 16:10
先回答第一个问题:C++的有些重载运算符为什么要返回引用?事实上我们的重载运算符返回void 、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值那么我们什么情况下要返回对象的引用呢?
原因有两个:①允许进行连续赋值 ②防止返回对象(返回对象也可以进行连续赋值)的时候调用拷贝构造函数和析构函数导致不必要的开销,降低赋值运算符等的效率。对于第二点原因:如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把 *this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,会降低赋值函数的效率。
作者:郭无心
链接:https://www.zhihu.com/question/22821783/answer/65033250
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- 为什么运算符重载返回值使用&?
- C++赋值运算符重载,为什么要返回引用?
- 赋值运算符重载为什么要返回引用
- c++中有些重载运算符为什么要返回引用?
- c++中有些重载运算符为什么要返回引用
- 重载运算符后的返回值?
- 运算符重载--函数返回值
- 运算符重载--函数返回值
- C++运算符重载,+-*/的重载,返回值为什么是对象而不是对象的引用?而流操作符<< 和 >> 却返回的是引用?
- C++运算符重载,+-*/的重载,返回值为什么是对象而不是对象的引用?而流操作符<< 和 >> 却返回的是引用?
- 输出运算符重载<<为什么一定要使用友元呢
- 友元 重载<<运算符为什么要返回ostream的引用?
- 为什么有时候C++运算符重载要返回引用,附对象生存周期
- 运算符重载使用
- C++运算符重载函数基础及其值返回状态
- C++运算符重载函数基础及其值返回状态
- C++运算符重载函数基础及其值返回状态
- C++运算符重载函数基础及其值返回状态
- C++数据结构——链栈的实现
- 文章标题
- stm8存储器结构
- 自然语言处理入门——白话情感分析原理
- 数据结构之——线性表(一)
- 为什么运算符重载返回值使用&?
- 异常的基本使用
- javascript图片库样例的html与js分离,以及兼容性优化
- 1、新手入手树莓派教程--安装系统
- 逻辑卷管理器
- springmvc+mybits整合遇到的问题
- 浅谈c++函数模板与类模板
- 自然语言处理入门——白话人机问答系统原理
- (shui ti)求1! + 2! + ……n!