[C++]左值和右值(LValue and RVaule)
2012-05-12 23:37
399 查看
左值(LValue)和右值(RValue)的一个快捷记法是赋值运算,左值是赋值运算左边的值,右值就是右边(=,=废话)。例如:
int a = 5;
a就是左值,5就是右值。
当然,如果真是这么个含义,那么这概念就相当蛋疼了。其实不是这样的~~
左值其实是对一块内存区域的引用(这个还不是C++中的int &a之类的引用),比如上边的a,就对应了一块内存区域(起始地址为&a,大小为sizeof(int))。
更专业的定义在这里:
An object is a region of storage that can be examined and stored into. An lvalue is an expression that refers to such an object. An lvalue does not necessarily permit modification of the object it designates. For example, a const object is an lvalue that cannot be modified.
右值对应的玩意其实也在内存里,但是我们忽略这一点,认为它存在于冥冥之中。例如上边那个5,其实它在静态数据段或者程序二级制代码中,但我们不关心这个,认为它无法修改。
附个链接:
http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc05lvalue.htm
int a = 5;
a就是左值,5就是右值。
当然,如果真是这么个含义,那么这概念就相当蛋疼了。其实不是这样的~~
左值其实是对一块内存区域的引用(这个还不是C++中的int &a之类的引用),比如上边的a,就对应了一块内存区域(起始地址为&a,大小为sizeof(int))。
更专业的定义在这里:
An object is a region of storage that can be examined and stored into. An lvalue is an expression that refers to such an object. An lvalue does not necessarily permit modification of the object it designates. For example, a const object is an lvalue that cannot be modified.
右值对应的玩意其实也在内存里,但是我们忽略这一点,认为它存在于冥冥之中。例如上边那个5,其实它在静态数据段或者程序二级制代码中,但我们不关心这个,认为它无法修改。
附个链接:
http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc05lvalue.htm
相关文章推荐
- [C++]左值和右值(LValue and RVaule) C++11版
- [C/C++不常见语法特性]_[初级]_[左值-右值-lvalue-rvalue]
- [C/C++不常见语法特性]_[初级]_[左值-右值-lvalue-rvalue]
- C++ - 左值(lvalue)引用和右值(rvalue)引用 的 区别
- C++ - 左值(lvalue)引用和右值(rvalue)引用 的 区别
- C++11中的rvalue references(一):左值和右值(lvalue and rvalue)
- 左值和右值(lvalue and rvalue)
- C++ 左值、右值、右值引用
- C++ 左值和右值概念
- 表达式左值右值(C++学习)
- 深入理解(实例) -- c++ 右值引用 左值引用
- c++ 左值右值 函数模板
- C++ move semantics and rvalue reference 移动语义与右值引用
- C++左值与右值之间共同与不同点解析
- c++中左值右值的区分
- c++中的左值与右值
- 关于左值与右值(lvalue & rvalue)
- C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward
- c++的左值右值问题
- C++左值与右值之道