Skip to Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

35.5 其他工具

本节介绍的工具数量少,但重要性并不低,它们只是不能归入大类而已。

35.5.1 move()和forward()

在<utility>中,标准库提供了一些最有用的小函数:

move()进行简单的右值转换:

我的观点,move()应该命名为rvalue()才对,因为它并没有移动任何东西,而是从实参生成一个右值,从而所指向的对象可以移动。

我们用move()告知编译器:此对象在上下文中不再被使用,因此其值可被移动,留下一个空对象。最简单的例子是swap()的实现(见35.5.2)。

forward()从右值生成一个右值:

这对forward()函数总是会一起提供,两者间的选择是通过重载解析实现的。在本例中,任何左值都会由第一个版本处理,而任何右值都会转向第二个版本。例如:

断言语句是为了防止聪明过头的程序员用一个显式模板实参和一个左值调用第二个版本。

forward()的典型用法是将一个实参从一个函数“完美转发”到另一个函数(见23.5.2节和28.6.3节)。标准库make_shared<T>(x)(见34.3.2节)是一个很好的例子。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

算法精讲视频课程:24篇系列讲座

算法精讲视频课程:24篇系列讲座

罗伯特·塞奇威克, 凯文·韦恩(Kevin Wayne)
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt
C语言核心技术(原书第2版)

C语言核心技术(原书第2版)

Peter Prinz, Tony Crawford
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111544395