通常的返回机制将返回值复制到临时存储区域中, 随后调用程序将访问该区域.
返回引用则程序则调用程序将直接访问返回值.
通常引用将指向传递给函数的引用, 因此调用函数实际上是直接访问自己的一个变量.
比如
const int& fun (int& a, const int& b)
{
a = a + b;
return a;
}
int x = 1, y = 2, z;
z = fun(x, y);
//等价于 fun(x, y); z = x;
而且返回引用不能返回函数内部的临时变量, 因为该变量随着函数的结束而销毁, 返回值会毫无意义, 如
const int& fun (int& a, const int& b)
{
int c = a + b;
return c;
}//该程序会崩溃, 因为变量c随着程序的结束而销毁, 继而返回的c的同名对象毫无意义
如果返回值,那么内存中只有两个存储该整形数据的单元,一个是函数中生成的被返回的整形数据,一个是接收以后的整形数据,而返回引用则只要一格单元来存储这个整形数据,被返回的和接收到的都是同一个整形数据。