常量不能被引用符& 引用
来源:互联网 发布:天刀本地网络异常 编辑:程序博客网 时间:2024/06/05 06:39
今天和朋友讨论了一道题目,原题如下:
例2
string foo( );
void bar(string & s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
其中bar("hello world");为什么是非法的呢。刚开始我们觉得因为“hello world”是一个常量,存储在静态存储区里,不能作为函数参数。
这个判断是我们的惯性思维惹的祸,把问题的原因想偏了,其实,问题的原因是因为函数的参数因该是string &类型的,而"helloworld"实际上是 const char[11]类型,错误原因是类型不匹配。
百度百科里对这个问题也给出了答案:
原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
备注:引用型参数应该在能被定义为const的情况下,尽量定义为const 。
- 常量不能被引用符& 引用
- 引用不能是常量
- 函数体中的指针或引用常量不能被返回
- 常量引用
- 引用常量
- 指针引用、常量引用
- 引用和常量引用
- const对象不能被引用
- 引用、常指针、常引用、指针常量、引用常量
- 关于常量引用
- 字符常量的引用
- 字符串常量下标引用
- C++手记:常量引用
- 尽量使用常量引用
- C++的常量引用
- C++的常量引用
- C++常量引用
- c++常量引用
- HTML表单中的readOnly VS disable
- 一个无法访问mysql的错误: ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x' (111)
- JAVA_OPTS参数-Xms和-Xmx的作用
- 决策树的原理
- Repeater应用实例
- 常量不能被引用符& 引用
- virgo web server启动问题解决
- Tomcat管理用户设置
- 用Nexus做Maven私服全攻略
- linux怎样判断当前登录的用户是从console登录还是telnet登录的
- droplist应用实例
- 、、
- 阿里巴巴为什么收购美国的Auctiva
- 与日本Yabage平台连接