1、引用不能直接返回局部变量
2、函数的调用可以作为左值
看案例:
#include <iostream>
using namespace std;
//1、引用不能直接返回局部变量
int & returnLocal() {
int a = 10;
return a;
}
//2、函数的调用可以作为左值
int & leftV(){
//静态变量在全局区中,函数结束依旧存在
static int st = 10;
return st;
}
int main() {
/* int &a = returnLocal();
cout << "a=" << a << endl;//错误,在函数执行后,变量a已经释放,引用无效。*/
int &b = leftV();
cout << "b=" << b << endl;//10
//函数作为左值使用
leftV() = 1000;
cout << "b=" << b << endl;//1000,因为返回的就是st的引用,可以看做b = 1000;
return 0;
}