c++ 非常量引用产生临时对象
2016-05-13 17:10
447 查看
在c++中,一下几种情况会产生临时对象:
1. 按值进行函数参数传递时
2. 函数返回对象时
3. 发生类型转化时。
c++中产生的临时对象是不可修改的,及默认为const的
非常量引用产生临时对象:
这里upper 函数的操作是将str转换为大写,而在进行了上面代码的调用时,发生了类型转化,产生临时对象,这时,upper函数进行操作的对象是临时对象,而真正的str并没有进行转换,无法达到预期效果。这就是为什么 C++语言禁止为非常量引用产生临时对象。
若将上文的upper函数的参数改为const string& str, (这里不考虑函数修改str),是正确的。
参考:
1. more effective c++ iterm 19 理解临时对象的来源
2. http://blog.csdn.net/microzone/article/details/6740475
1. 按值进行函数参数传递时
2. 函数返回对象时
3. 发生类型转化时。
c++中产生的临时对象是不可修改的,及默认为const的
非常量引用产生临时对象:
def upper(string& str); char test [] = "effective c++"; upper(test) //报错
这里upper 函数的操作是将str转换为大写,而在进行了上面代码的调用时,发生了类型转化,产生临时对象,这时,upper函数进行操作的对象是临时对象,而真正的str并没有进行转换,无法达到预期效果。这就是为什么 C++语言禁止为非常量引用产生临时对象。
若将上文的upper函数的参数改为const string& str, (这里不考虑函数修改str),是正确的。
参考:
1. more effective c++ iterm 19 理解临时对象的来源
2. http://blog.csdn.net/microzone/article/details/6740475
相关文章推荐
- C++的常量引用
- 详解C++各种智能指针: auto_ptr, shared_ptr, weak_ptr, scoped_ptr
- 学习学生信息管理系统心得
- C++调用C函数
- c语言程序的基本语句能完成功能的体会-例:俄罗斯方块
- C++设计模式
- C语言中输入输出重定,freopen()妙用。
- 3、C语言的变量简易理解
- 关于c++中进制输入输出
- _USER_ERROR__missing_dlib_all_source_cpp_file__OR......
- 平衡二叉树创建,左旋,右旋,左平衡和右平衡
- boost::string
- c语言实现开灯问题
- log4cpp测试
- [关键字]C/C++中const关键字详解
- C++/Qt 内存管理机制
- 第7周 C语言程序设计(新2版) 练习1-23 删除C语言程序中所有的注释语句(代码有问题?)
- Effective C++ 3e----new & delete(八)条款2:写了placement new也要写placement delete
- c++ builder 按钮BitBtn实现只打开文件夹
- c语言的数据类型在oc中的对应