C++返回引用的问题

2025-02-23 20:57:00
推荐回答(3个)
回答1:

函数返回整形的n,那么系统会建一个临时变量存储n
int ABC()
{
int n = 5;

return n;
}

这里不需要返回引用
如你写的,函数调用结束后,函数栈会被销毁,引用不到了

例子:
函数返回值(int Func1())时,要产生一个临时变量作为函数返回值的副本(保存该函数调用中要返回的值),而用引用返回值(int &Func2())时,不产生值的副本。故在用函数返回值定义一个引用(int &ia = Func1())时,该引用为临时变量的引用,由于临时变量作用域短暂,故该引用存在随时无效的危险。而用引用返回值时,由于不产生值的副本,故int &i = func2();在func2()的返回值是一个静态或者全局变量的情况下的调用是合法可行的,其直接用全局数据区中的变量来初始化引用y,当然如果Func2中的返回值是局部变量,那么当然是非法的。

不妨自己再分析一下下面的四种函数调用:
int Func1();
int &Func2();
int &i = Func2();
int &ia = Func1();
int ib = Func1();
int ic = Func2();

回答2:

有些时候就是要返回拷贝,比如说你这种。你得到一个被释放了的内存的引用,有什么用啊?

回答3:

不能返回临时变量的引用。