c++中的左值与右值的区别
来源:互联网 发布:淘宝小号点数是什么 编辑:程序博客网 时间:2024/06/05 19:15
左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/forward 等新语义的基础。
左值右值的定义
左值与右值这两概念是从 c 中传承而来的,在 c 中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式).
int a;int b;a = 3;b = 4;a = b;b = a;// 以下写法不合法。= a;a+b = 4;
在 c 语言中,通常来说有名字的变量就是左值(如上面例子中的 a, b),而由运算操作(加减乘除,函数调用返回值等)所产生的中间结果(没有名字)就是右值,如上的 3 + 4, a + b 等。我们暂且可以认为:左值就是在程序中能够寻值的东西,右值就是没法取到它的地址的东西(不完全准确),但如上概念到了 c++ 中,就变得稍有不同。具体来说,在 c++ 中,每一个表达式都会产生一个左值,或者右值,相应的,该表达式也就被称作“左值表达式", "右值表达式"。对于基本数据类型来说(primitive types),左值右值的概念和 c 没有太多不同,不同的地方在于自定义的类型,而且这种不同比较容易让人混淆:
1) 对于基础类型,右值是不可被修改的(non-modifiable),也不可被 const, volatile 所修饰(cv-qualitification ignored)
2) 对于自定义的类型(user-defined types),右值却允许通过它的成员函数进行修改。
先只了解了这么多,以后有更深的了解再说。
原文地址:http://www.cnblogs.com/catch/p/3500678.html
- c++中的左值与右值的区别
- 左值与右值的区别
- C语言左值与右值的区别(C语言深度剖析读书笔记一)
- 左值与右值区别
- C++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- C++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- c++中的左值与右值
- springMVC 的工作原理和机制
- wpf数据绑定source和elementname的区别
- CasperJS
- 第3周项目一 :顺序表的基本运算
- 计算机组成原理知识点梳理(三)
- c++中的左值与右值的区别
- android.content.ReceiverCallNotAllowedException: 解决方法
- 迭代器模式
- C语言:二维数组的存储及地址表示
- 【学习】springmvc之基于setter的依赖注入
- DataTables API中文翻译
- CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用
- grunt 根据部署环境配置环境参数
- 右移运算符>>和>>>的区别