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

书上说返回引用类型时,没有复制返回值。但还是不太明白,这俩个之间有什么区别。能举个具体的例子说明这两个区别么?

这个程序你跑一下就明白了。返回值引用就是说返回的变量不创建临时变量,而是用返回的变量的空间进行。下面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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-01
其实就是引用类型和类型的区别。
比如int a;这句话实实在在地定义了一个变量。
而int &b = a;它定义了一个int型的引用b,b指向a,b只是a的一个另外的表示,而没有新定义变量。
第2个回答  2010-10-01
引用其实复制的是地址 不过用的时候就把地址解析了
相似回答