C++函数返回值为引用(&)

2018-10-27  本文已影响0人  糖葫芦_4273
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()返回的东西已经消失了,引用也就不存在了
}
上一篇 下一篇

猜你喜欢

热点阅读