C++中返回引用和返回值的区别

2024-11-09 00:42:16
推荐回答(2个)
回答1:

通常的返回机制将返回值复制到临时存储区域中, 随后调用程序将访问该区域. 

返回引用则程序则调用程序将直接访问返回值.

通常引用将指向传递给函数的引用, 因此调用函数实际上是直接访问自己的一个变量.

比如

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的同名对象毫无意义

回答2:

如果返回值,那么内存中只有两个存储该整形数据的单元,一个是函数中生成的被返回的整形数据,一个是接收以后的整形数据,而返回引用则只要一格单元来存储这个整形数据,被返回的和接收到的都是同一个整形数据。