C++返回非引用类型跟返回引用类型的区别?(函数名前面有&)

书上说返回引用类型时,没有复制返回值。但还是不太明白,这俩个之间有什么区别。能举个具体的例子说明这两个区别么?... 书上说返回引用类型时,没有复制返回值。但还是不太明白,这俩个之间有什么区别。能举个具体的例子说明这两个区别么? 展开
 我来答
02230838
推荐于2017-09-05 · TA获得超过2067个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:1058万
展开全部
这个程序你跑一下就明白了。返回值引用就是说返回的变量不创建临时变量,而是用返回的变量的空间进行。下面fun就是建立了临时变量,所以多了一个析构调用;fun2则没有建立,所以23里没有输出。
#include <stdio.h>
#include <iostream.h>
class A
{
public:
~A()
{
cout<<"------"<<a<<endl;
}
int a;
};
A fun(A &a)
{
a.a = 100;
return a;
}
A& fun2(A &a)
{
a.a = 99;
return a;
}
int main(int arge,char*argv[ ])
{
A a;
cout<<"------1------"<<endl;
a = fun(a);
cout<<"------2------"<<endl;
a = fun2(a);
cout<<"------3------"<<endl;
return 0;
}
goose_in_cloud
2010-10-01 · TA获得超过132个赞
知道答主
回答量:76
采纳率:0%
帮助的人:80.9万
展开全部
其实就是引用类型和类型的区别。
比如int a;这句话实实在在地定义了一个变量。
而int &b = a;它定义了一个int型的引用b,b指向a,b只是a的一个另外的表示,而没有新定义变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友43ebde78e
2010-10-01 · TA获得超过1040个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:692万
展开全部
引用其实复制的是地址 不过用的时候就把地址解析了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式