[求助]传值返回和引用返回?晕!
因为采用引用返回方式的函数返回的是实际的单元,所以必须保证该单元在函数返回后依然存在。<BR> 函数:int& f(){<BR> int i;<BR> ......<BR> return i;<BR> }<BR>包含了一个错误,当返回i时,i已经不存在了,因此,函数调用者不能访问这个返回的i。<BR> 改为: int f(){int i;..... return i;}<BR><BR>可是书上又说:引用返回,返回值不拷贝到临时存储空间,甚至连return语句所用的那个存储单元对调用者而言都是可访问的。<BR><BR>这两段话根本就是相反的嘛!我听谁的啊?[align=right][color=#000066][此贴子已经被作者于2007-6-27 15:15:23编辑过][/color][/align]
使用变量时应保证在其生命周期内进行... <P>基本了解了,谢谢。</P> 记住一点,不能返回局部变量的引用,或者局部指针对象。<br> <P>[quote]记住一点,不能返回局部变量的引用,或者局部指针对象。[/quote]<BR>局部指针是可以返回的。。。<BR>int* fun()<BR>{<BR> return new int(3);<BR>}</P> wfpb,我指的当然不是动态内存啦。<br>更正一点,是不要返回指向局部对象的指针。<br><br>int* fun(){<br> int a = 1;<br> int* pi = &a;<br> return pi;<br>}<br>这样类似的情况。<br> 应该吧我现在还是不太懂啊 [quote][bo]以下是引用 [un]wfpb[/un] 在 2007-6-28 00:22 的发言:[/bo]
局部指针是可以返回的。。。int* fun(){ return new int(3);} [/quote]
这样也不安全...你必须随时提醒自己要在fun()外用指针接受返回值// 呵呵..还好了,只要用指针接受就好了..要是没接受内存就要泄露了...
页:
[1]
