| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 958 人关注过本帖
标题:[求助]传值返回和引用返回?晕!
只看楼主 加入收藏
tangofan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-5-20
收藏
 问题点数:0 回复次数:9 
[求助]传值返回和引用返回?晕!
因为采用引用返回方式的函数返回的是实际的单元,所以必须保证该单元在函数返回后依然存在。
函数:int& f(){
int i;
......
return i;
}
包含了一个错误,当返回i时,i已经不存在了,因此,函数调用者不能访问这个返回的i。
改为: int f(){int i;..... return i;}

可是书上又说:引用返回,返回值不拷贝到临时存储空间,甚至连return语句所用的那个存储单元对调用者而言都是可访问的。

这两段话根本就是相反的嘛!我听谁的啊?
搜索更多相关主题的帖子: 传值 int 函数 return 用者 
2007-06-27 15:02
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

临时变量返回引用,由于临时变量在{}结束后就注销,所以不应该访问,所以返回临时变量的引用是错误的。
成员函数返回对象的引用或者其他:
class A
{
int a;
public:
A():a(0){}
A& operator++()
{
a++;
return *this; //返回对象本身的引用,对象在析构之前仍然有效。
}
};

[此贴子已经被作者于2007-6-27 15:15:23编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-27 15:14
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
使用变量时应保证在其生命周期内进行...

女侠,约吗?
2007-06-27 20:46
tangofan
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-5-20
收藏
得分:0 

基本了解了,谢谢。


狂热tango!
2007-06-27 22:18
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
记住一点,不能返回局部变量的引用,或者局部指针对象。

Fight  to win  or  die...
2007-06-27 22:39
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

记住一点,不能返回局部变量的引用,或者局部指针对象。

局部指针是可以返回的。。。
int* fun()
{
return new int(3);
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-28 00:22
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
wfpb,我指的当然不是动态内存啦。
更正一点,是不要返回指向局部对象的指针。

int* fun(){
int a = 1;
int* pi = &a;
return pi;
}
这样类似的情况。

Fight  to win  or  die...
2007-06-28 09:19
xjw1987524
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-4-25
收藏
得分:0 
应该吧我现在还是不太懂啊
2008-04-25 00:07
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
[bo]以下是引用 [un]wfpb[/un] 在 2007-6-28 00:22 的发言:[/bo]

局部指针是可以返回的。。。int* fun(){    return new int(3);}

这样也不安全...你必须随时提醒自己要在fun()外用指针接受返回值//

樱花大战,  有爱.
2008-04-25 08:05
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
呵呵..还好了,只要用指针接受就好了..要是没接受内存就要泄露了...

学习需要安静。。海盗要重新来过。。
2008-04-25 11:41
快速回复:[求助]传值返回和引用返回?晕!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018716 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved