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
引用其实复制的是地址 不过用的时候就把地址解析了

c++函数的返回值类型---引用&非引用
c++函数返回值类型:引用与非引用的区别在c++中,函数的返回值类型有明显区分,主要分为返回非引用类型和返回引用类型。两种方式在处理数据时有着显著的不同。1. 返回非引用类型 当你调用一个函数并期望函数返回一个新的对象或值时,它通常会返回非引用。这种方式下,函数创建了一个新的对象并将其值返...

c++中为什么有时候函数返回类型前要加&
1.如果没有&,那就是返回值,不能对返回值a[n]进行赋值操作;2.如果有&,那返回了一个引用,可以对返回值a[n]进行赋值操作。

c++中函数名字前有&是什么意思?
&的意思是返回引用类型。格式:类型标识符 &函数名(形参列表及类型说明){ \/\/函数体}。在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error。

C++函数返回引用问题
C++为“引用“赋于了新的内涵:当函数的形式参数使用“引用类型”时,函数内对“引用”的操作可以改变原变量的值,而用变量类型作形式参数时是拷贝传值,没有这种优势。返回”引用“的函数在函数名前加一个&,再前面是类型名,比如int &index()是返回一个int型“引用”,因为“引用”是int型某变量...

C++类的成员函数前加&什么意思
这个和函数参数加地址符的作用是一样的,用于返值返回的是引用而不是赋值。也就是说,该函数返值会通过地址传送的方式给到函数调用者要求的返回值,这样可以节省对象赋值造成的内存浪费,通常用于返值是大型对象(而不是简单变量类型)的时候。比如你有个class T,而这个函数的返值是return T; 加上...

C++函数名的前面有&或是*符号,是什么意思
函数名前的&表示返回值类型是个引用,准确地说是左值引用,*则表示返回类型是指针,引用和指针的区别请自行查阅资料了。

关于c++在返回类型中用&
&在C++还有一个比较重要的用法,就是“引用”!你写的语句的意思是以引用去接收该函数的返回值,并非地址哦,*this就是一个对象,即以引用去接收该对象,这与普通的返回不同的是普通直接返回时,要创建返回值的一个副本,而直接返回引用不创建,提高了效率。

C++中函数定义时函数名前加上“&”引用符号表示什么意思?
表示函数返回引用类型

c++函数名前加&是什么意思
表示这个函数的返回值是const string&类型,这里的&表示引用

C++返回引用类型
& fun() { int a; a=10; return a; } 这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。因此,要返回一个引用时,“临时变量”不能是“临时”的,至少得等函数外部使用完毕这个引用之后,才能销毁它。

相似回答