| |
|
开发:
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++11:右值 -> 正文阅读 |
|
[C++知识库]C++11:右值 |
在template的声明式中,class和typename没区别 但如果要在模板参数内部,要typename定义嵌套从属类型的时候 就要typename指定从属类型
编译器就能知道这个是一个类型 下面开始C++11标准 右值引用左值和右值,左值引用和右值引用是C++11中重要概念,是理解move/forward等新语义的基础 左值: 右值: 判断标准: 在C++11中所有的值必属于左值、纯右值、将亡值之一。比如临时变量、(函数返回值的临时变量、运算表达式产生的临时变量)原始字面量等都是纯右值。而将亡值是C++11与右值引用相关的表达式(将要被移动的对象、std::move返回值等) 什么是左值引用引用就是某一变量的别名,对引用的操作与对变量直接操作完全一样 对左值的引用叫做左值引用,就是之前学过的引用(变量别名),为了和新标椎中引入的“右值引用”相区别,所以现在叫左值引用 type& name = 左值表达式; 什么是右值引用对右值(不能取值)的引用叫右值引用 type && name = 右值表达式;
右值引用独立于右值和左值,虽然是对右值的引用,但他本身还是个左值 比如a1 a2就是左值 func(a1); 会直接报错? 但可以传GetVal() 意义 右值引用绑定了右值,让临时右值的声明周期延长了(续命),可以利用这个特点避免临时对象的拷贝构造和析构,优化性能 常量左值引用也可以性能优化。输出结构和右值引用相同,因为常量左值引用是一个“万能”的引用类型,可以接受左值、右值、常量左值和常量右值 在C++11以前右值能被const类型的引用所指向 通用引用定义函数形参的时候,可以指定:
引用折叠规则模板函数: 引用折叠规则: 引用折叠解释通用引用: 完美转发完美转发: 在函数模板中,完全依照模板的参数类型(左值,右值特征),将参数传给函数模板中调用的另外一个函数。 void process(int&t){cout<<“lvalue”;}
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 22:06:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |