免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: 羽人
打印 上一主题 下一主题

请教大家一个问题:关于临时变量的“const”属性 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-08-21 09:32 |只看该作者
to whyglinux:
谢谢你的回复。我知道,C++中规定,在使用临时变量做函数参数的时候,只能用来初始化一个const X &,而不能用来初始化一个X &,之所以这样规定,是C++有这样一个考虑:函数形式参数const X &与X &的区别就是X &式的形参表明程序员想在函数内部修改变量的值,然面,临时变量在函数调用结束后,其作用范围结束,临时变量也就消失了,对临时变量所作的修改也相应丢失,如果程序员想在函数内部修改这个变量,那么就不应该使用一个临时变量,用一个临时变量去初始化一个“const X &”是显然程序员的偶然失误。
我在测试这个问题的时候,发现不同的编译器对这个问题的支持不尽相同,所以我把我手中几个编译器的不同结果都原样贴到论坛。只是想跟楼主表明,在这个问题上,不同的编译器有不同的实现,不能光以编译器的表现为准,应该以规则为准。

论坛徽章:
0
22 [报告]
发表于 2015-03-27 11:03 |只看该作者
Only the non-const return value can be used as an lvalue.
Thus, it’s important to use const when returning an object by value
if you want to prevent its use as an lvalue.
见C++第二版卷一8.3节,传递和返回对象
所以f()可以作为左值。
书中第七章关于临时变量自动是const的,意思应该是:对临时变量的引用只能是const,因为改变临时变量没有意义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP