左值和右值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oqqENvY12/article/details/72859447

在C++中,可以放到复制运算符=坐标的是左值,可以放到赋值运算符右边的是右值。

有些变量既可以当左值右可以当右值。

  • 左值(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可将左值引用转化成右值引用。

指针与引用的区别:
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
引用的目的主要在于函数的参数传递中。

猜你喜欢

转载自blog.csdn.net/oqqENvY12/article/details/72859447