C++返回非引用类型跟返回引用类型的区别?(函数名前面有&)
书上说返回引用类型时,没有复制返回值。但还是不太明白,这俩个之间有什么区别。能举个具体的例子说明这两个区别么?...
书上说返回引用类型时,没有复制返回值。但还是不太明白,这俩个之间有什么区别。能举个具体的例子说明这两个区别么?
展开
3个回答
展开全部
这个程序你跑一下就明白了。返回值引用就是说返回的变量不创建临时变量,而是用返回的变量的空间进行。下面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;
}
#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;
}
展开全部
其实就是引用类型和类型的区别。
比如int a;这句话实实在在地定义了一个变量。
而int &b = a;它定义了一个int型的引用b,b指向a,b只是a的一个另外的表示,而没有新定义变量。
比如int a;这句话实实在在地定义了一个变量。
而int &b = a;它定义了一个int型的引用b,b指向a,b只是a的一个另外的表示,而没有新定义变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用其实复制的是地址 不过用的时候就把地址解析了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询