免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chinaljj

[函数] 函数能这样返回string吗? [复制链接]

论坛徽章:
0
发表于 2007-05-17 11:06 |显示全部楼层
原帖由 converse 于 2007-5-17 11:05 发表


从LZ代码的情况来看,传一个引用参数进去是最好的办法,不到万不得已的时候不要使用从函数中直接传参数回去吧,当然POD类型的例外了.

传引用不是最好的办法。如果我想这样呢:
string a, b, c, d, e, f;
a = b = c = d = e = f = abc(...);
这样的话一个个传我不烦死?

或者我想:
fun(abc(...));
传引用我还得声明一个临时变量呢。

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
发表于 2007-05-17 11:06 |显示全部楼层

回复 6楼 思一克 的帖子

原帖由 思一克 于 2007-5-17 10:56 发表
tmp是本地变量可以返回呀。

谁说即将消亡的local variable不能返回?



支持,函数返回的局部变量会被复制到返回值中,只是局部变量的指针不能返回。

论坛徽章:
0
发表于 2007-05-17 11:09 |显示全部楼层
原帖由 林杰杰 于 2007-5-17 11:06 发表

传引用不是最好的办法。如果我想这样呢:
string a, b, c, d, e, f;
a = b = c = d = e = f = abc(...);
这样的话一个个传我不烦死?

或者我想:
fun(abc(...));
传引用我还得声明一个临时变量呢。


请注意我说的话:从LZ的代码来看....

论坛徽章:
0
发表于 2007-05-17 11:10 |显示全部楼层
原帖由 converse 于 2007-5-17 11:09 发表


请注意我说的话:从LZ的代码来看....

从LZ的代码看来,并不能否认那几种情况的存在……

论坛徽章:
0
发表于 2007-05-17 11:11 |显示全部楼层
原帖由 林杰杰 于 2007-5-17 11:10 发表

从LZ的代码看来,并不能否认那几种情况的存在……


OK,我不跟你抬杠.

论坛徽章:
0
发表于 2007-05-17 11:45 |显示全部楼层
最近关于 返回值的问题比较多,看哪位前辈给整理一份比较准确的给大家参考?

论坛徽章:
0
发表于 2007-05-17 11:45 |显示全部楼层
原帖由 zwylinux 于 2007-5-17 10:45 发表


不行,tmp是一个local variable, abc返回时tmp也随着消亡了。

为什么不可以?如果我没记错的话,会调用拷贝构造函数。(C++不是特别在行)

论坛徽章:
0
发表于 2007-05-17 11:49 |显示全部楼层
原帖由 soul_of_moon 于 2007-5-17 11:45 发表

为什么不可以?如果我没记错的话,会调用拷贝构造函数。(C++不是特别在行)

看情况决定调用拷贝构造函数还是operator =.

论坛徽章:
0
发表于 2007-05-17 13:38 |显示全部楼层
了解!谢各位热心!

每人发¥100买糖吃!

论坛徽章:
0
发表于 2007-05-17 15:14 |显示全部楼层
原帖由 converse 于 2007-5-17 10:51 发表
可以,如果存在operator=会调用之,但是不推荐这么用,效率低

std::string 的复制、赋值大多版本用的是copy on write,这样返回效率不低
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP