IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++进阶之右值引用 -> 正文阅读

[C++知识库]C++进阶之右值引用

为了支持移动操作,C++新标准引入了新的引用类型——右值引用,通过&&而不是&来获得右值引用,常规引用称之为左值引用,右值引用有完全相反的特性,只能绑定到要求转换的表达式,字面常量或是返回右值的表达式。

C++Primer在471页如上说明,但对于我们来说,我们只是想知道两者分别及应用,但无奈书中的知识点太绕嘴,我们现在来详解两者的区别

左值引用 我们在敲代码时是这样的

int i = 666;
int &j = i; //正确 j引用i;

//我们要分清与指针的区别
//指针

int *m = &i;//这样是指针

接下来我们看一些右值引用的类型

int i = 666;
int &&j = i * 666;//右值引用正确

C++Primer中这样说明 函数返回值是左值引用,赋值操作是返回左值,解引用和前置递增、递减都返回左值 算数,关系 位,后置递增、递减都是返回右值,我们来看代码格式

type fun()  //函数返回右值 请用右值引用接受
{
    return a
}
//函数返回操作
int &i = fun();//错误 返回值非引用函数返回是右值


type& fun()
{
    return a;//返回左值
}


//解引用操作
int i = 6;
int *j = &i;
int k = *j; //解引用 返回左值

//前置递增递减
i++;
j--; //返回左值


//字面常量是右值
int &&i = 6;
//算数操作
int &&i = 5 * 6; //返回右值

int i = 1;
int j = 2;
int && k = i * j;//返回右值

++i;
--j;//都返回右值

根据这些例子 我们就能根据前文中所给的右值和左值类型进行判断和应用左值引用和右值引用

还有一点,我们可以将const的左值引用和右值引用绑定到右值上

左值和右值区别

左值持久;右值短暂?

标准库move函数

虽然我们不能将一个右值引用绑定到左值上,但我们可以把一个左值显式的转换成对应的右值类型

int i = 6;

int &&j = i;//错误无法将左值传递给右值引用

int &&k = std::move(i);//正确 显式move调用告诉编译器我么有一个左值,我们希望像一个右值一样处理

本人猪头一只,希望代码能被看懂,如有错误请提出

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:39:41  更:2021-10-27 12:40:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:47:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码