int func(a)
{return a;
}int main()
{int r = func(3 + 5);return 0;
}

上述代码报错, 非常量引用的初始值必须为左值 。  主要原因如下:

c++编译器的一个关于语义的限制。如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会在函数中修改这个值,并且这个被修改的引用在函数返回后要发挥作用。但如果你把一个临时变量当作非const引用参数传进来,由于临时变量的特殊性,程序员并不能操作临时变量,而且临时变量随时可能被释放掉,所以,一般说来,修改一个临时变量是毫无意义的,据此,c++编译器加入了临时变量不能作为非const引用的这个语义限制,意在限制这个非常规用法的潜在错误。

(完)

临时变量不能作为非const引用相关推荐

  1. C++非const引用问题:error: cannot bind non-const lvalue reference of type

    出现这个问题是因为把一个临时变量传入了函数的引用形参中,简化代码如下: void back(int &i){return; }int main(){back(1); } 应该改为: void ...

  2. C++中const引用和非const引用的使用注意

    今天学习时突然有疑惑,C++有了指针为何还要设计引用呢?后来看到一篇博客豁然开朗:为什么 C++ 有指针了还要引用? 总结一下: 代码更加简洁好看了 由于引用必须被初始化,并且之后也无法重新绑定其他对 ...

  3. const引用和非const引用

    const引用可以初始化为不同类型的对象或者初始化为右值,同样的初始化对于非const引用却是不合法的. 非const引用只能绑定以与该引用同类型的对象中. const引用则可以绑定到不同但相关的类型 ...

  4. C++ 临时变量的常量性

    文章目录 1.认识临时变量的常量性 2.临时变量常量性的原因 参考文献 1.认识临时变量的常量性 关于临时变量的常量性,先看一段代码. void print(string& str) {cou ...

  5. 关于c++中的临时变量

    为什么写这样一篇文章? 本人是c++的初学者, 刚接触类这个概念没多久, 但是遇到了许多问题困扰我, 其中有一个问题尤为致命, 我问了许多前辈, 他们许多都没能如愿帮我彻底解决这个问题, 而写这篇文章 ...

  6. 引用和const 引用的区别(转自chinaitlab)

    原文地址:http://c.chinaitlab.com/basic/747981.html 1)在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用必须初始化. 但是用 ...

  7. 【C++】什么情况下会产生临时变量

    临时变量是只在调用期间有效,具有常性的一种变量. 一.值传递 在返回值以值传递(传值和传指针)的形式返回时,会生成临时变量. int sum(int a,int b) {return a + b; } ...

  8. C++中“非常量引用的初始值必须是左值”的处理方法

    原文:https://blog.csdn.net/hou09tian/article/details/80565343 1 左值和右值 在C++中,左值可以出现在赋值语句的左边和右边:右值只能出现在赋 ...

  9. C++primer: 引用与 const 引用

    1.什么是引用? 引用就是对象的另外一个名字.在实际程序中,引用主要用作函数的形式参数. 引用是一种复合类型,通过在变量名前面添加"&"符号来定义.复合类型是指用其他类型定 ...

最新文章

  1. html中content属性,CSS3的content属性用法详解
  2. 运行在浏览器中的深度学习框架,开源了
  3. pythonweb开发-5个最好的Python Web开发框架
  4. 关于wmi获取网卡mac地址重复的分析
  5. VS Supercharger插件的破解
  6. Bengio等人新作:基于双层规划的端到端分子构象生成框架
  7. 直播预告 | 清华大学博士生牛艺霖:常识知识获取与常识推理
  8. java socket ftp登录_基于java socket的简单FTP功能实现
  9. 更改数据库的兼容模式
  10. iphone悬浮球怎么设置_OPPO手机怎么截屏?大部分的人只会两种,包括你吗?
  11. LeetCode58. 最后一个单词的长度
  12. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
  13. Mybatis的注解应用之映射声明
  14. 包装印前软件“方正锐利”升级到11.5版本,新增可变数据印刷功能
  15. 【CF1467C】Three Bags 题解
  16. 35 漂亮的单页网页设计
  17. Ubuntu下解决firefox profile cannot be loaded it may be missing or inaccessible
  18. Android 代码形式安装证书到手机内
  19. Vray和PS的冬景效果图制作教程蓝海创意云渲染
  20. (a++) + (++a)

热门文章

  1. Android 第三课 构建简单的用户界面
  2. YUMI~~强大的USB启动盘制作工具!!
  3. Vista共享文件夹无法访问?
  4. 机器学习与数学分析(二)
  5. linux fedora 35 彻底卸载idea2021.2.2
  6. 查看win10剩余激活时间
  7. 图解Spark On Yarn cluster模式运行机制
  8. 【收藏】QGIS加载xyz格式地图(以高德影像图和路网为例)
  9. Java GUI编程:swing JTree实现树形菜单代码示例
  10. DBeaverEE7.3.0安装教程