c++初学者遇见的问题
0
所有回答(3)
0
0
0
#include <iostream>
using namespace std;
int fun1(int a);
int& fun2(int a);
int main() {
int a = 10;
cout << fun1(a) << endl;
cout << fun2(a) << endl;
}
int fun1(int a) {
return a;
}
int& fun2(int a) {
return a;
}
上述代码可以成功运行,但是会发出警告:
app.cpp: In function 'int& fun2(int)':
app.cpp:13:15: warning: reference to local variable 'a' returned [-Wreturn-local-addr]
int& fun2(int a) {
~~~~^
10
另外,它没有打印出 fun2 的返回值,该函数理应返回某个对象的引用,引用在初始化后不能更改,始终指向同一个变量,且不能为空,而在 fun2 中,该函数返回的是内部变量的引用,该变量的声明周期限制在 fun2 的作用域内,一旦 fun2 返回,其内部变量就会被销毁,这时候返回的引用所引用的是一个不存在的对象。
参考: