临时变量不能作为非const引用
int func(a)
{return a;
}int main()
{int r = func(3 + 5);return 0;
}
上述代码报错, 非常量引用的初始值必须为左值 。 主要原因如下:
c++编译器的一个关于语义的限制。如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会在函数中修改这个值,并且这个被修改的引用在函数返回后要发挥作用。但如果你把一个临时变量当作非const引用参数传进来,由于临时变量的特殊性,程序员并不能操作临时变量,而且临时变量随时可能被释放掉,所以,一般说来,修改一个临时变量是毫无意义的,据此,c++编译器加入了临时变量不能作为非const引用的这个语义限制,意在限制这个非常规用法的潜在错误。
(完)
临时变量不能作为非const引用相关推荐
- C++非const引用问题:error: cannot bind non-const lvalue reference of type
出现这个问题是因为把一个临时变量传入了函数的引用形参中,简化代码如下: void back(int &i){return; }int main(){back(1); } 应该改为: void ...
- C++中const引用和非const引用的使用注意
今天学习时突然有疑惑,C++有了指针为何还要设计引用呢?后来看到一篇博客豁然开朗:为什么 C++ 有指针了还要引用? 总结一下: 代码更加简洁好看了 由于引用必须被初始化,并且之后也无法重新绑定其他对 ...
- const引用和非const引用
const引用可以初始化为不同类型的对象或者初始化为右值,同样的初始化对于非const引用却是不合法的. 非const引用只能绑定以与该引用同类型的对象中. const引用则可以绑定到不同但相关的类型 ...
- C++ 临时变量的常量性
文章目录 1.认识临时变量的常量性 2.临时变量常量性的原因 参考文献 1.认识临时变量的常量性 关于临时变量的常量性,先看一段代码. void print(string& str) {cou ...
- 关于c++中的临时变量
为什么写这样一篇文章? 本人是c++的初学者, 刚接触类这个概念没多久, 但是遇到了许多问题困扰我, 其中有一个问题尤为致命, 我问了许多前辈, 他们许多都没能如愿帮我彻底解决这个问题, 而写这篇文章 ...
- 引用和const 引用的区别(转自chinaitlab)
原文地址:http://c.chinaitlab.com/basic/747981.html 1)在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用必须初始化. 但是用 ...
- 【C++】什么情况下会产生临时变量
临时变量是只在调用期间有效,具有常性的一种变量. 一.值传递 在返回值以值传递(传值和传指针)的形式返回时,会生成临时变量. int sum(int a,int b) {return a + b; } ...
- C++中“非常量引用的初始值必须是左值”的处理方法
原文:https://blog.csdn.net/hou09tian/article/details/80565343 1 左值和右值 在C++中,左值可以出现在赋值语句的左边和右边:右值只能出现在赋 ...
- C++primer: 引用与 const 引用
1.什么是引用? 引用就是对象的另外一个名字.在实际程序中,引用主要用作函数的形式参数. 引用是一种复合类型,通过在变量名前面添加"&"符号来定义.复合类型是指用其他类型定 ...
最新文章
- html中content属性,CSS3的content属性用法详解
- 运行在浏览器中的深度学习框架,开源了
- pythonweb开发-5个最好的Python Web开发框架
- 关于wmi获取网卡mac地址重复的分析
- VS Supercharger插件的破解
- Bengio等人新作:基于双层规划的端到端分子构象生成框架
- 直播预告 | 清华大学博士生牛艺霖:常识知识获取与常识推理
- java socket ftp登录_基于java socket的简单FTP功能实现
- 更改数据库的兼容模式
- iphone悬浮球怎么设置_OPPO手机怎么截屏?大部分的人只会两种,包括你吗?
- LeetCode58. 最后一个单词的长度
- Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
- Mybatis的注解应用之映射声明
- 包装印前软件“方正锐利”升级到11.5版本,新增可变数据印刷功能
- 【CF1467C】Three Bags 题解
- 35 漂亮的单页网页设计
- Ubuntu下解决firefox profile cannot be loaded it may be missing or inaccessible
- Android 代码形式安装证书到手机内
- Vray和PS的冬景效果图制作教程蓝海创意云渲染
- (a++) + (++a)