【发布时间】:2010-09-01 17:45:02
【问题描述】:
可以从函数返回对局部变量的引用吗?本地我的意思是变量将在函数内创建(在堆栈上,即不使用 new),其范围仅在该函数内。当我搜索这个时,我得到了相互矛盾的答案。 1) 说这种用法是正确的,但 2) 与之相矛盾。
1) http://functionx.com/cpp/examples/returnreference.htm
2) http://www.cprogramming.com/tutorial/references.html(在参考和安全部分下)
哪一个是对的?
我的另一个问题是,如果 1) 是正确的,那么以下是否有相同的目的。
i) int& a = func();
ii) int a = func();其中 func() 返回对 int(该函数中的局部变量)的引用。
在上述两种情况下,都没有涉及到返回值的复制,不是吗。我想防止复制返回值,因为返回值可能很大。
提前谢谢你。
拉格瓦。
【问题讨论】:
-
除了在整个 C++ 代码中传播错误之外,我不知道您得到的第一个参考是要做什么。不要相信它。
-
链接 (1) 肯定是错误的。链接(2)我没有看到areturn by reference。
-
男孩,functionx 的东西很臭。他们的代码质量的线索是在他们的主页“1900 年 9 月 1 日,星期三 11:19:59 AM”