news 2026/5/2 19:28:26

C++笔记-C++11(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++笔记-C++11(二)

紧接上文,我们在介绍了移动构造和移动赋值时仅仅只介绍了函数返回值的情况,那么什么场景还会用到呢?我们接着往下看:

3.5.4右值引用和移动语义在传参中的提效

通过查看STL文档中的一些容器如vector,list,我们可以看出在他们中push和insert系列接口在C++11中引入了右值引用的版本。

这些信息就体现在我们现在要讲的在传参上的体现,同时也告诉我们当参数是一个左值时,容器内部继续调用拷贝构造进行拷贝,将对象拷贝到容器空间中的对象;当对象是一个右值时,容器内部则调用移动构造,右值对象的资源到容器空间的对象上。

我们看这几个例子,在传参时也同样调用了相应的拷贝构造和移动构造。

上面我们是利用了stl库中的list来控制我们自己写的string类,下面我们来尝试写出list中的push_back和insert中对右值引用的相关操作:

下面以我们之前在list的章节自己实现list的为例,这里就不展示全部的代码了。

这是我们对之前写的list所进行的修改,这里注意我们在参数部分虽然用了右值引用,但是上节我们讲了变量表达式均为左值,所以我们在复用传参时还要注意将变量表达式通过move函数强转为右值,不然还是会调用左值的拷贝构造函数,并且少一个都不行。

这是没有问题的list,和我们调用库中的一样,但是:

这里我就把ListNode中的构造函数少写了move函数来将参数强转为右值,通过上图可以看出结果发生了改变,只调用了左值的拷贝构造函数,所以我们在自己联系时一定要注意这点。

3.6类型分类

1.C++11以后,进⼀步对类型进⾏了划分,右值被划分纯右值(pure value,简称prvalue)和将亡值

(expiring value,简称xvalue)。

2. 纯右值是指那些字⾯值常量或求值结果相当于字⾯值或是⼀个不具名的临时对象。如: 42 、

true 、 nullptr 或者类似 str.substr(1, 2) 、 str1 + str2 传值返回函数调⽤,或者整形 a 、 b , a++ , a+b 等。纯右值和将亡值C++11中提出的,C++11中的纯右值概念划分等价于C++98中的右值。

3. 将亡值是指返回右值引⽤的函数的调⽤表达式和转换为右值引⽤的转换函数的调⽤表达,如move(x) 、 static_cast<X&&>(x)。4.泛左值(generalized value,简称glvalue),泛左值包含将亡值和左值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 19:24:23

新手入门如何在Taotoken平台获取并管理自己的API Key

新手入门如何在Taotoken平台获取并管理自己的API Key 1. 注册与登录Taotoken平台 要开始使用Taotoken平台&#xff0c;首先需要完成账号注册。访问Taotoken官网&#xff0c;点击右上角的"注册"按钮&#xff0c;填写邮箱、设置密码并完成验证流程。注册成功后&#…

作者头像 李华
网站建设 2026/5/2 19:22:17

机器学习数据泄露:原理、检测与防范实践

1. 数据泄露:机器学习中的隐形杀手 第一次发现模型在训练集上表现近乎完美,却在真实场景中一塌糊涂时,我盯着屏幕足足愣了十分钟。后来才明白,这是遭遇了机器学习中最隐蔽的陷阱之一——数据泄露(Data Leakage)。这种现象就像考试前提前拿到了答案,模型看似"学&qu…

作者头像 李华
网站建设 2026/5/2 19:21:24

保姆级教程:用Conda在Linux上安装Kraken2和Bracken(含Standard库避坑指南)

从零到精通的Kraken2与Bracken部署指南&#xff1a;宏基因组物种注释全流程解析 第一次接触宏基因组物种注释工具时&#xff0c;我被Kraken2和Bracken这对黄金组合的效率和准确性所震撼——直到自己动手安装时才发现&#xff0c;从环境配置到数据库下载&#xff0c;每一步都可能…

作者头像 李华
网站建设 2026/5/2 19:20:23

自托管AI平台DashHub.ai:构建团队专属的智能体与知识库协作系统

1. 项目概述&#xff1a;一个为团队而生的开源AI平台如果你正在为团队寻找一个既能统一管理各种大语言模型&#xff0c;又能保障数据安全、控制成本的AI应用平台&#xff0c;那么DashHub.ai的出现&#xff0c;或许能让你眼前一亮。这不是又一个简单的聊天机器人前端&#xff0c…

作者头像 李华