如果函数返回值类型为int,返回的是本体的值
int fun()
{
int a = 10086;
return a;
}
int main(int argc, const char *argv[])
{
int ret = fun(); //int ret = 10086;
cout << "ret = " << ret << endl;
return 0;
}//执行结果:输出ret = 10086
如果函数返回值类型是int&,返回的是本体
int& fun()
{
static int a = 10086;
return a;
}
int main(int argc, const char *argv[])
{
int ret = fun(); //int ret = a;
cout << "ret = " << ret << endl;
return 0;
}//执行结果:输出ret = 10086
int& fun()
{
static int a = 10086;
return a;
}
int main(int argc, const char *argv[])
{
int& ret = fun(); //int& ret = a;
cout << "ret = " << ret << endl;
return 0;
}//执行结果:输出ret = 10086(打印的是a的值)
不可以给一个常量取别名(引用)
int fun()
{
static int a = 10086;
return a;
}
int main(int argc, const char *argv[])
{
int& ret = fun(); //int& ret = 10086;
cout << "ret = " << ret << endl;
return 0;
}
//执行结果:
/*
gec@ubuntu:/mnt/hgfs/love_you/02$ g++ demo1.cpp
demo1.cpp: In function ‘int main(int, const char**)’:
demo1.cpp:13:19: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’ //不能将' int& '类型的非const左值引用绑定到' int '类型的右值
13 | int& ret = fun(); //int& ret = 10086;
ret 是一个别名,可以修改,如果将10086赋值给ret, 给ret等价于给10086赋值,而常量是不可修改的
*/