C++中值返回和引用返回有什么区别?在什么情况下应该用引用返回

 我来答
Tester婢蒛
推荐于2017-11-26 · TA获得超过310个赞
知道答主
回答量:147
采纳率:33%
帮助的人:64.2万
展开全部
返回一个对象的时候一般用引用作为返回值。为什么呢?因为C++中的对象是要占用一定的内存空间的,返回引用的话就可以减少一个复制对象的过程,从而减少内存开销。 举个例子吧: 假设有一个类A,有成员函数A& fun();返回的是引用。 那么在main()里我们定义一个对象A a;然后调用fun(); 即a=fun(); 在这调用的过程中作了哪些动作呢? 其实就只作了一个动作,就是把fun()里的返回值(即一个对象)直接赋值给a。 而如果是值返回的话:即A fun(); 那么调用的时候A a; a=fun(); 这里就不止只有一个动作了,首先把fun()里的返回值(即对象)赋值给一个临时变量(这个变量我们见不到,但确实存在,且占用一定空间,我们把这变量记为 temp.),然后再通过这个临时变量才把值赋给a,即a=temp;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-07-13
引用Tester婢蒛的回答:
返回一个对象的时候一般用引用作为返回值。为什么呢?因为C++中的对象是要占用一定的内存空间的,返回引用的话就可以减少一个复制对象的过程,从而减少内存开销。 举个例子吧: 假设有一个类A,有成员函数A& fun();返回的是引用。 那么在main()里我们定义一个对象A a;然后调用fun(); 即a=fun(); 在这调用的过程中作了哪些动作呢? 其实就只作了一个动作,就是把fun()里的返回值(即一个对象)直接赋值给a。 而如果是值返回的话:即A fun(); 那么调用的时候A a; a=fun(); 这里就不止只有一个动作了,首先把fun()里的返回值(即对象)赋值给一个临时变量(这个变量我们见不到,但确实存在,且占用一定空间,我们把这变量记为 temp.),然后再通过这个临时变量才把值赋给a,即a=temp;
展开全部
必须要反对一下了,看下effective c++的条款21,返回引用是需要条件的,并不是说“返回一个对象的时候一般用引用作为返回值”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式