int function1(int & aa)
{
return aa;
}
int & function2(int & aa)
{
return aa;
}
int main()
{
int a = 10;
int b;
b = function1(a);//function1()的返回值先储存在一个临时变量中,
//然后再把临时变量赋值给b
function1(a) = 20;//不OK function1()的返回值为临时变量,不能赋值
function2(a) = 20;//OK 此时a的值变成了20
}
说明:若函数的返回值为引用(&),则编译器就不为返回值创建临时变量了。直接返回那个变量的引用。所以千万不要返回临时变量的引用,如下:
int & function()
{
int b = 10;
return b;//不OK 等函数返回后,b就消失了,引用了一个消失的东西
//程序会懵逼的。指针也一样。
}
int main()
{
int a;
a = function();//function()返回的东西已经消失了,引用也就不存在了
}
网友评论