从string到string &

startlive 2008-03-04 10:57:53
定义一个函数f( string & )
然后调用f( string( "AAAAAAA" ) )
在vc中是对的,可是在dev c++中却错啦,为什么呀。
...全文
113 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
NKLoveRene 2008-03-06
是const的
回复
sheenl 2008-03-06
因为vc不支持标准c++
回复
abupie 2008-03-06
[Quote=引用 2 楼 jixingzhong 的回复:]
f( const string & )
[/Quote]
正解
回复
xalangying 2008-03-06
不应该把临时变量string( "AAAAAAA" )传递给引用参数,改为f( const string & ) 就行了
回复
p0303230 2008-03-06
[Quote=引用 2 楼 jixingzhong 的回复:]
f( const string & )
[/Quote]
“AAAAAAA”是常量,所以要const
回复
jixingzhong 2008-03-06
f( const string & )
回复
startlive 2008-03-06
哦,原来如此。谢谢大家拉。
回复
dubiousway 2008-03-06
post your program
回复
abupie 2008-03-06
除了刚刚说的const修饰符修饰函数的传递参数的作用和用法, 这里还涉及另一个问题: 临时变量到底是不是常量?
对于f( string( "AAAAAAA" ) ) , 编译器必须建立临时对象string("AAAA"), 临时对象是需要存储空间而且必须被构造和删除(和普通变量的区别是我们看不到这些, 是编译器负责决定它们的去留以及它们存在的细节)。对于C++标准草案而言:临时对象自动地成为常量。
结合前面说的const修饰符修饰函数的传递参数, 所以C++标准中要求临时变量增加const修饰.
回复
abupie 2008-03-06
[Quote=引用 8 楼 startlive 的回复:]
要加const,是不是说明零时变量是不可更改的?
还是这个const有其它的意义?
[/Quote]
const修饰符修饰函数的传递参数,格式如下:
void Fun(const int Var); 

告诉编译器Var在函数体中的无法改变,从而防止了使用者的一些无意的或错误的修改。
回复
startlive 2008-03-06
要加const,是不是说明零时变量是不可更改的?
还是这个const有其它的意义?
回复
相关推荐
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2008-03-04 10:57
社区公告
暂无公告