C++引用做函数返回值
使用方法如下
int & test_f(void)
{
static int a=10;
return a;
}
在这里我们把静态变量a传回来,传的是引用
完整代码:
#include "iostream"
using namespace std;
int &test_f(void)
{
static int a=10;
return a;
}
int main()
{
int &b=test_f();
cout << "引用_val= " << b <<endl;
}
输出结果;
关键点:
这里我们必须要使用static
,否则在函数中创建的局部变量,存放在栈区,函数结束后a这个变量就不存在了,不用static也可以使用new
使其存放在堆区,两者都可以,不要忘了就行。
额外理解:
代码如下:
#include "iostream"
using namespace std;
int &test_f(void)
{
static int a=10;
return a;
}
int main()
{
int &b=test_f();
test_f()=20;
cout << "引用_val= " << b <<endl;
}
输出结果:
解释:
相比于之前只多了一句test_f()=20;
,我么可以注意到结果也变成了20
int &test_f(void)返回的其实就是a这个变量,我们自然可以对它进行赋值操作,又因为b其实和a使一样的,我们改变a自然也改变了b,所以最终结果为20