| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:基础问题
只看楼主 加入收藏
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:87.93%
收藏
已结贴  问题点数:20 回复次数:5 
基础问题
string test3(string &s1,string &s2)
{
    string tmpS=s1+s2;
    return tmpS;
}
在调用的时候不会报错,但改成下列形式则出错
string &test3(string &s1,string &s2)
{
    string tmpS=s1+s2;
    return tmpS;
}
书上解释是内存已经被释放了,这个能理解,那么第一种调用是返回的数据是占用什么地方的内存
谁能给个解释吗
搜索更多相关主题的帖子: 基础 
2010-01-21 10:42
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
第一种情况得到的是tmpS的拷贝,
第二种情况想得到是地址,当然没有了。

★★★★★为人民服务★★★★★
2010-01-21 15:09
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
多谢 只是对第一种返回的数据是怎样存放的没有理解 第二种出错的原因是能理解的
2010-01-21 16:19
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
字符串操作本身是一个比较费资源的过程,因为存在很多字符串拷贝过程。第一种情况下,往往是这样调用的吧!:string str=test3(……)返回的字条符串存放到str中了。

★★★★★为人民服务★★★★★
2010-01-22 08:00
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
以下是引用cnfarer在2010-1-22 08:00:20的发言:

字符串操作本身是一个比较费资源的过程,因为存在很多字符串拷贝过程。第一种情况下,往往是这样调用的吧!:string str=test3(……)返回的字条符串存放到str中了。
那如果我是用的cout直接输出呢 是不是就理解为存放在输出缓存区了
2010-01-22 08:10
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
我的理解,是的.

★★★★★为人民服务★★★★★
2010-01-23 15:03
快速回复:基础问题
数据加载中...
 
   



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

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