函数返回引用类型
在C++函数中,不可以返回局部变量的引用
例:
运行下列代码,观察输出值。
int main()
{
int& result = sum();
test();
cout << "result = " << result << endl;
return 0;
}
int& sum()
{
int num = 10;
int& rnum = num; //rnum 为引用类型的局部变量, rnum的生存期只在sum()内部
return rnum;
}
void test()
{
int x = 1;
int y = 2;
int z = 3;
}
在不调用test()时,输出结果是 result = 10;
在调用test()时,输出结果却是 result = 2;
这是因为,局部变量 rnum 的生存期仅在函数 sum() 的内部,当其生存期结束时,它所占用的内存被回收分给下面的变量。
在这里, 内存被分给了变量 y 。回收内存的分配有一定的随机性。
所以要避免返回局部变量的引用,因为它将带来意想不到的错误。