左值和右值
2017-06-04 15:56
260 查看
在C++中,可以放到复制运算符
有些变量既可以当左值右可以当右值。
左值(Lvalue) → Location
表示内存中可以寻址,可以给它赋值(const类型的变量例外)
右值Rvalue) → Read
表示可以知道它的值(例如常数)
一个典型的例子
a++ : 先使用a的值,再给a加1,作为 左值
++a : 先加再用,作为 右值
左值符号 &
右值符号 &&
在C++中,临时对象不能作为左值,但是可以作为常量引用,
C++ 11中的std::move可将左值引用转化成右值引用。
指针与引用的区别:
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
引用的目的主要在于函数的参数传递中。
=坐标的是左值,可以放到赋值运算符右边的是右值。
有些变量既可以当左值右可以当右值。
左值(Lvalue) → Location
表示内存中可以寻址,可以给它赋值(const类型的变量例外)
右值Rvalue) → Read
表示可以知道它的值(例如常数)
一个典型的例子
a++ : 先使用a的值,再给a加1,作为 左值
// a++的实现 int temp = a; a = a + 1; return temp;
++a : 先加再用,作为 右值
a = a + 1; return a;
左值符号 &
右值符号 &&
在C++中,临时对象不能作为左值,但是可以作为常量引用,
const &。
C++ 11中的std::move可将左值引用转化成右值引用。
指针与引用的区别:
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
引用的目的主要在于函数的参数传递中。
相关文章推荐
- 左值和右值
- 左值和右值
- C++中的左值与右值(二
- c++中的左值与右值
- C++左值右值和移动语义
- “非常量引用的初始值必须为左值”问题
- 深入理解(实例) -- c++ 右值引用 左值引用
- C语言中的左值和右值
- 左值与右值
- 左值与右值
- 左值和右值的概念
- pval是int*类型而不是int数组类型的左值----理解
- 后自增(减)的结果不是左值
- 非左值数组可以具有下标
- 左值 右值
- 内置变量,复合变量与内存引用的关系(左值)及指针的几个解引用方法
- 左值右值
- 为什么(i++)不能做左值,而(++i)可以
- C++中的左值与右值
- 左值和右值。(这个是翻译错误,l-value的l是location的意思,r-value的r是readable的意思,非left和right)