在Visual C++以前的版本中,可以将非常量引用绑定到临时对象。 现在,只能将临时对象绑定到常量引用。

示例:
    例如,与Visual Studio .NET相比,以下示例在Visual Studio .NET 2003中具有不同的运行时行为:

#include "iostream"
        using namespace std;
        class C {};

void f(C & c) { cout << "C&" << endl; }
        void f(C const & c) { cout << "C const &" << endl; }

int main()
        {
           f(C());
        }

Visual Studio 6.0中的输出:
        C&
    Visual Studio .NET 2003中的输出:
        C const &  

参见:Visual C++ 编译器中的重大更改
    附注:规定临时对象只能绑定到常量引用,表示不能通过该引用改变临时对象的值,但是临时对象本身并不是const型的,C() = C();是允许的~

    另外,经本人测试,在VS2003或者VS2005中,如果去掉上面的f(C const& c)函数,不会产生编译错误,main()函数会正常调用f(C &c)函数,而且C &c = C()也能够通过编译,而这些在g++中却会产生编译错误。这说明VC编译器对C++标准的支持还不是很完全,g++编译器对代码的要求更加严格。

原文地址:http://msdn.microsoft.com/zh-cn/cfbk5ddc.aspx

转载于:https://www.cnblogs.com/bigshow/archive/2008/11/08/1329858.html

[转帖]无法将临时对象绑定到非常量引用相关推荐

  1. 临时变量不能作为非const引用

    int func(a) {return a; }int main() {int r = func(3 + 5);return 0; } 上述代码报错, 非常量引用的初始值必须为左值 .  主要原因如下 ...

  2. ×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)

    文件   sales_data.h #include <iostream> #include <string> using namespace std; struct sale ...

  3. More Effective C++之 Item M19:理解临时对象的来源

    当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量.例如在下面这段swap(交换)例程里: template<class T> void swap(T& obj ...

  4. More Effective C++之Item M19:理解临时对象的来源

    临时对象产生场景: 1.类型隐式转换: 2.函数值返回: 当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量.例如在下面这段swap(交换)例程里: template<cla ...

  5. 临时对象与NRV技术

    临时对象与NRV技术 <More Effective C++>中讲到,在C++中真正的临时对象是看不见的,它们不出现在你的源代码中.建立一个没有命名的非堆(non-heap)对象会产生临时 ...

  6. Gotchas 44-引用和临时对象

    摘要: 1)"引用必须用左值来初始化"基本上着意味着引用的初始化物必须具有一个地址,也有一个值(→常见错误6).不过谈及指向常量的引用时,事情就开始变得复杂了.指向常量的引用仍然必 ...

  7. 探讨“临时对象”(temporary object)

    2019独角兽企业重金招聘Python工程师标准>>> MSDN中对VS2012版本的临时对象的说明如下: 在某些情况下,编译器有必要产生临时对象.     当初始化一个 常量引用 ...

  8. C++对象模型9——临时对象的生命周期、模板及实例化分析、内联函数

    一.临时对象的生命周期 T c=a+b 假设T是一个类型,那么上述代码执行时,首先会产生一个临时对象用来存放a+b的结果(拷贝初始化临时对象),然后用该临时对象拷贝初始化c,最后临时对象被释放.如果开 ...

  9. 提高C++性能的编程技术笔记:临时对象+测试代码

    类型不匹配:一般情况是指当需要X类型的对象时提供的却是其它类型的对象.编译器需要以某种方式将提供的类型转换成要求的X类型.这一过程可能会产生临时对象. 按值传递:创建和销毁临时对象的代价是比较高的.倘 ...

  10. golang的临时对象池sync.Pool

    今天在写码之时,发现了同事用到了sync.pool.因不知其因,遂Google之.虽然大概知道其原因和用法.还不能融汇贯通.故写此记,方便日后查阅.直至明了. 正文 在高并发或者大量的数据请求的场景中 ...

最新文章

  1. linux 程序自启
  2. IDEA Spring框架入门实例
  3. sps及pps在解码器内传递过程
  4. 少走弯路的10个忠告
  5. java求数组和值_用java编写数组求和,array[]和ArrayList()?
  6. CentOS7 修改设置静态IP和DNS
  7. Python备份文件实现以及备份大文件出错解决方案
  8. 如果本地连接受限或无连接的解决方法
  9. 信号完整性与电源完整性分析 第三版 pdf_信号完整性揭秘于博士SI设计手记高清PDF分享...
  10. SimpleFOC之ESP32(二)—— 开环控制
  11. 应用计算机测定电阻伏安特性,实验: 应用计算机测线性电阻伏安特性
  12. 一个程序员的奋斗历程(绝对励志!) [转]
  13. latex 参考文献显示问号_如何自学latex软件
  14. 修改嵌入式linux驱动支持不同的LCD
  15. Spreadtrum_Android_8805和8810环境搭建和源码编译V1.0.1_Word文档
  16. 2021年印度经济发展研究报告
  17. 微信小程序(八):地图
  18. 天津室内设计培训班:30岁兼职室内设计月薪过万,我是怎么做到的?
  19. (附源码)计算机毕业设计ssm高校勤工助学管理系统
  20. Elasticsearch搜索引擎优化指南之分词优化

热门文章

  1. excel内容少却文件很大_Excel文件格式批量转换你会了吗?神操作!Excel文件转XPS格式...
  2. java中常用的类——Math类
  3. serv u使用mysql数据库_Serv-u Mysql数据库用户
  4. java基础总结06-常用api类-System类常用方法
  5. Sphinx 2.2.3 安装和配置,英文数字中文搜索
  6. 计算学生成绩 c语言,c语言项目实战2学生成绩的输入与计算.ppt
  7. c# 如何抓微信把柄_抓住把柄表情包 - 抓住把柄微信表情包 - 抓住把柄QQ表情包 - 发表情 fabiaoqing.com...
  8. @Transactional什么情况才生效
  9. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_7 ModelAttribute注解
  10. react里 MD5加密