C++中值返回和引用返回有什么区别?在什么情况下应该用引用返回
展开全部
返回一个对象的时候一般用引用作为返回值。为什么呢?因为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;
返回一个对象的时候一般用引用作为返回值。为什么呢?因为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,返回引用是需要条件的,并不是说“返回一个对象的时候一般用引用作为返回值”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询