4.引用做函数返回值

2021-01-15  本文已影响0人  lxr_
#include<iostream>
using namespace std;

//引用做函数的返回值
//1.不要返回局部变量的引用

int& test1()
{
    int a = 10;//存于栈区
    return a;
}
//2.函数的调用可以作为左值
int& test2()
{
    static int a = 10;//静态变量存放在全局区,全局区上的数据在程序结束后系统进行释放
    return a;
}

int main()
{
    /*
    int& ret = test1();
    cout << "ret=" << ret << endl;//第一次结果正确,是因为编译器做了保留
    cout << "ret=" << ret << endl;//第二次结果错误,因为a的内存已经被释放
    */

    int& ret1 = test2();
    cout << "ret=" << ret1 << endl;//程序未结束,static变量内存不会被释放
    cout << "ret=" << ret1 << endl;//

    test2() = 20;//可以作为左值,返回a的引用,即为a的别名,便可以修改a
    cout << "ret=" << ret1 << endl;//
    cout << "ret=" << ret1 << endl;//

    system("pause");
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读