您的位置:首页 > 编程语言 > C语言/C++

c++ 左值、右值、右值引用、左值引用

2018-03-15 11:56 471 查看
c++里一切值必须属于左值、右值两者之一。

左值:一切变量(包括用const修饰的变量)、对象、包括引用都属于左值;

右值:一切字面值(可以是宏),临时无名对象(函数返回值)。

说明一下:函数返回值,返回的是某一个类型的值,并不是返回变量。

左值并不是说能放在"="左边的值就是左值

虽然用const修饰的变量其值不能改变,但是它仍是左值

一、左值引用

    基本用法:type& 引用名 = 左值表达式;

 const type& 引用名 = 右值表达式

    注意事项:

    1.左值引用仅仅为变量或对象取别名,必须在定义时赋值,因为只有值或

对象存在时,才有意义为它绑定别名。

    2.当左值引用绑定值或对象后,就一直代表这该变量或对象,不会再绑定

其它变量或对象。"从一而终"。

二、右值引用

    基本用法:type&& 引用名 = 右值表达式;

    注意:

    1.右值引用同样需要在定义的时候赋值,和左值引用一样;但是右值引用

同样也遵循"从一而终"。

    2.右值引用不能绑定左值表达式,但是通常用std::move()将左值强制转

换成右值,再绑定如:

    int a;

    int&& r = a;  //编译失败

    int&& r1 = std::move(a);  //正确

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: