C++语言导学(英文版·第2版)
作者 : [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著
丛书名 : 经典原版书库
出版日期 : 2018-12-20
ISBN : 978-7-111-61564-4
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 240
开本 : 16
原书名 : A Tour of C++,Second Edition
原出版社: Pearson Education Inc.
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

在这本中,作者把C++完整参考手册中的综述内容摘取出来,并且进行必要的扩充和提升,目的是让有经验的程序员在很短时间之内就能清晰地了解到是哪些元素构成了现代的C++语言。本书虽薄,结构却清晰完整,作者在书中介绍了C++语言的绝大多数特性以及最重要的一些标准库组件。尤其难能可贵的是,虽然受篇幅所限无法对每个知识点展开深入讲解,但依然能够帮助程序员了解语言的全貌,并给出一些关键示例,便于他们更好地学习和使用C++语言。

图书特色

图书前言

教而至简,不亦乐乎。
—西塞罗

现在的C++感觉就像是一种新的语言。与C++98相比,现在的C++令我能更清晰、更简单、更直接地表达思想。而且,编译器可以更好地检查程序中的错误,程序的运行速度也提高了。
本书给出C++语言的一个概述,这里所说的C++是由当前的ISO C++标准C++17所定义的,由主要的C++提供商实现。此外,本书还会介绍概念和模块,它们是由ISO技术规范定义的,目前已在使用,但在C++20之前尚无计划包含进标准中。
就像其他任何一种现代编程语言一样,C++规模庞大且提供非常丰富的库,这是高效编程所需的。这本薄书的目的是让一个有经验的程序员快速了解现代C++语言,因此它覆盖了大多数主要的语言特性和主要的标准库组件。读者花费几个小时就能读完这本书,但显然要想写出漂亮的C++程序绝非一日之功。好在本书的目的并非让读者熟练掌握一切,而只是给出一个概览,给出一些关键的例子,帮助读者开始自己的C++之旅。
假设读者已经拥有了一些编程经验。如果没有,建议你先找一本入门教材学习,比如《Programming: Principles and Practice Using C++》(Second Edition)[Stroustrup,2009],然后再来学习本书。即便你曾经编写过程序,你使用的语言或者编写的应用也可能在风格或形式上与本书所介绍的C++相距甚远。
我们用城市观光的例子来说明本书的作用,比方说游览哥本哈根或者纽约。在短短几个小时之内,你可能会匆匆游览几个主要的景点,听一些有趣的传说或故事,然后收到接下来做什么的建议。仅靠这样一段旅程,你无法真正了解这座城市,也无法完全理解听到和看到的东西,更无法熟悉这座城市正式的非正式的生存法则。毕竟想要真正了解一座城市,你必须生活在其中,而且往往需要多年。不过如果幸运的话,此时你已经对城市的概貌有了一些了解,知道了它的某些特殊之处,并且对有些方面产生了兴趣。在这段旅程之后,你就可以开始真正的探索了。
这段旅程会为你介绍C++语言的主要特性,它是按其所支持的程序设计风格来呈现的,例如面向对象编程和泛型编程。本书不准备提供一个详细的、手册式的、逐条特性介绍的C++语言呈现。遵循优秀教科书的传统,我努力在使用每个语言特性之前对其进行解释,但实际情况并不总是允许这样,而且并不是每个人都会严格按顺序阅读本书。因此,我鼓励读者使用交叉引用和索引。
类似地,这段旅程是以示例的方式介绍标准库,而非逐一列举标准库特性。本书没有介绍ISO标准之外的库,需要的话,读者可以查阅相关资料,例如文献[Stroustrup, 2013]和[Stroustrup, 2014],但网络上还有大量的(质量也参差不齐的)其他资料,如文献[Cppreference]。例如,当我提到一个标准库函数或类时,很容易就能找到它的定义,并且通过查找其文档,找到很多相关的资料。
本书力求把C++作为一个整体呈现在读者面前,而非像千层糕一样逐层地介绍。因此,本书不细分某个语言特性是属于C、C++98的一部分还是新的C++11、C++14或C++17。这种介绍可在第16章中找到。我聚焦基础并力求简洁,但我也未能完全抵抗过度阐述新特性的诱惑。这看起来也满足了很多已经了解旧版本C++的读者的好奇心。
一本程序设计语言参考手册或标准会简单陈述可以做什么,但程序员通常对学习如何用好语言更感兴趣。要达到这个目的,一方面要靠主题的选择,另一方面要靠文字的组织,特别是建议部分。关于优秀的现代C++语言是怎样构成的更多建议可在《C++ Core Guidelines》[Stroustrup, 2015]一书中找到,对于希望继续深入探索本书介绍的思想的读者,它是一本很好的书。你可能注意到了,《C++ Core Guidelines》和本书在建议的呈现上甚至建议的编号方式上都惊人相似。其中一个原因是本书第一版是最初的《C++ Core Guidelines》的主要内容资源。
致谢
本书的一些内容源自TC++PL4 [Stroustrup, 2013],因此要感谢帮助我完成TC++PL4的所有同仁。
感谢帮助我完成并校对本书第一版的所有同仁。
感谢摩根·斯坦利给予我时间进行本书的写作。感谢哥伦比亚大学2018春季课程“使用C++设计程序”的所有学生找出了本书最初草稿中的很多拼写问题和错误并给出了很多建设性的意见。
感谢保罗·安德森、查克·埃利森、彼得·哥特史林、威廉·蒙斯、查理·威尔逊和谢尔盖·祖布科夫审阅了本书并给出了很多改进建议。

Bjarne Stroustrup
曼哈顿,纽约

上架指导

计算机\程序设计

封底文字

在本书中,C++的创造者Bjarne Stroustrup描述了现代C++语言的构成。这本简洁、自成体系的导论书籍包含C++语言大多数主要特性和标准库组件,当然,也并未深入介绍,而是给予程序员一个有意义的语言概述、一些关键的例子以及起步阶段的实用帮助。
在本书中,作者通过介绍编程风格(例如面向对象编程和泛型编程)引出支持它们的C++特性。从基本特性开始,延伸到更宽范围的进阶主题,包括很多C++17新特性,例如移动语义、一致初始化、lambda表达式、改进的容器、随机数以及并发。本书非常全面,甚至包含一些为C++20提出的扩展,例如概念和模块。本书最后讨论了C++语言的设计和演化。
这本C++导论书籍的主旨不在于教你如何编程(如果出于这一目的,请参阅本作者的《C++程序设计:原理与实践》(原书第2版)(分基础篇、进阶篇),已由机械工业出版社出版),它也不可能是你精通C++的唯一资源(如果出于这一目的,请参阅本作者的《C++程序设计语言》(原书第4版),已由机械工业出版社出版,以及推荐的在线资源)。但是,如果你是一名C或C++程序员,希望更加熟悉现在的C++语言,或者你是一名精通其他语言的程序员,希望获得有关现代C++语言本质和优点的精确描述,你不可能找到比这本导学书籍更短或更简单的介绍了。

作者简介
本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 是C++的设计者和最初的实现者,他也是《C++程序设计:原理与实践(原书第2版)》和《C++程序设计语言(原书第4版)》等书的作者。他曾在贝尔实验室、AT&T实验室和德州农工大学工作,现在担任纽约市摩根斯坦利技术部门总经理和哥伦比亚大学客座教授。他获得过多项荣誉,包括因“构思并开发了C++程序设计语言”获得美国国家工程院2018年查尔斯·斯塔克·德雷珀奖。斯特劳斯特鲁普博士是美国国家工程院会员、IEEE会士和ACM会士。

图书目录

第1章 基础知识 1
1.1 引言 1
1.2 程序 2
1.3 函数 4
1.4 类型、变量和算术运算 5
1.5 作用域和生命周期 9
1.6 常量 9
1.7 指针、数组和引用 11
1.8 测试 14
1.9 映射到硬件 16
1.10 建议 18
第2章 用户自定义类型 21
2.1 引言 21
2.2 结构 22
2.3 类 23
2.4 联合 25
2.5 枚举 26
2.6 建议 27
第3章  模块化 29
3.1 引言 29
3.2 分别编译 30
3.3 模块(C++20) 32
3.4 名字空间 34
3.5 错误处理 35
3.6 函数参数和返回值 36
3.7 建议 46
第4章 类 47
4.1 引言 47
4.2 具体类型 48
4.3 抽象类型 54
4.4 虚函数 …56
4.5 类层次 …57
4.6 建议 63
第5章 基本操作 65
5.1 引言 65
5.2 拷贝和移动 68
5.3 资源管理 72
5.4 常规操作 74
5.5 建议 77
第6章 模板 79
6.1 引言 79
6.2 参数化类型 79
6.3 参数化操作 84
6.4 模板机制 89
6.5 建议 92
第7章 概念与泛型编程 93
7.1 引言 93
7.2 概念 94
7.3 泛型编程 98
7.4 可变参数模板 100
7.5 模板编译模式 104
7.6 建议 104
第8章 标准库概览 107
8.1 介绍 107
8.2 标准库组件 108
8.3 标准库头文件和名字空间 109
8.4 建议 110
第9章 字符串和正则表达式 111
9.1 介绍 111
9.2 字符串 111
9.3 字符串视图 114
9.4 正则表达式 116
9.5 建议 122
第10章 输入输出 123
10.1 介绍 123
10.2 输出 123
10.3 输入 125
10.4 I/O状态 127
10.5 用户自定义类型的I/O 128
10.6 格式化 129
10.7 文件流 130
10.8 字符串流 130
10.9 C风格I/O 131
10.10 文件系统 132
10.11 建议 136
第11章 容器 137
11.1 介绍 137
11.2 vector 138
11.3 list 142
11.4 map 144
11.5 unordered_map 144
11.6 容器概览 146
11.7 建议 148
第12章 算法 149
12.1 介绍 149
12.2 使用迭代器 150
12.3 迭代器类型 153
12.4 流迭代器 154
12.5 谓词 155
12.6 算法概览 156
12.7 概念(C++20) 157
12.8 容器算法 160
12.9 并行算法 161
12.10 建议 161
第13章 实用工具 163
13.1 引言 163
13.2 资源管理 164
13.3 范围检查:span 168
13.4 特殊容器 170
13.5 替代选择 174
13.6 分配器 178
13.7 时间 179
13.8 函数适配 180
13.9 类型函数 181
13.10 建议 185
第14章 数值 187
14.1 引言 187
14.2 数学函数 188
14.3 数值算法 189
14.4 复数 190
14.5 随机数 191
14.6 向量算术 192
14.7 数值限制 193
14.8 建议 193
第15章 并发 195
15.1 引言 195
15.2 任务和thread 196
15.3 传递参数 197
15.4 返回结果 198
15.5 共享数据 199
15.6 等待事件 200
15.7 任务通信 202
15.8 建议 205
第16章 历史和兼容性 207
16.1 历史 207
16.2 C++特性演化 214
16.3 C/C++兼容性 218
16.4 参考文献 222
16.5 建议 225


Contents
ContentsPreface
1The Basics1
1.1 Introduction........................................................... 1
1.2 Programs............................................................... 2
1.3 Functions............................................................... 4
1.4 Types, Variables, and Arithmetic.......................... 5
1.5 Scopeand Lifetime............................................... 9
1.6 Constants......................................... 9
1.7 Pointers,Arrays, and References.......................... 11
1.8 Tests ................................................14
1.9 Mappingto Hardware ...........................................16
1.10 Advice............................................. 18
2User-Defined ypes 21
2.1 Introduction..................................... 21
2.2 Structures........................................ 22
2.3 Classes............................................ 23
2.4 Unions................................................................... 25
2.5 Enumerations........................................................ 26
2.6 Advice................................................................... 27
3Modularity 29
3.1 Introduction........................................................... 29
3.2 SeparateCompilation ............................................30
3.3 Modules(C++20) ..................................................32
3.4 Namespaces........................................................... 34
3.5 ErrorHandling ......................................................35
3.6 FunctionArguments and Return Values .....................................36
3.7 Advice................................................................... 46
4Classes 47
4.1 Introduction........................................................... 47
4.2 ConcreteTypes ......................................................48
4.3 AbstractTypes ......................................................54
4.4 Virtual Functions................................................... 56
4.5 ClassHierarchies ..................................................57
4.7 Advice................................................................... 63
5Essential Operations65
5.1 Introduction........................................................... 65
5.2 Copyand Move ..................................................... 68
5.3 ResourceManagement ..........................................72
5.4 Conventional Operations....................................... 74
5.5 Advice................................................................... 77
6Templates 79
6.1 Introduction........................................................... 79
6.2 Parameterized Types .............................................79
6.3 Parameterized Operations..................................... 84
6.4 Template Mechanisms.......................................... 89
6.5 Advice................................................................... 92
7Concepts and Generic Programming 93
7.1 Introduction........................................................... 93
7.2 Concepts................................................................ 94
7.3 GenericProgramming ...........................................98
7.4 Variadic Templates ................................................100
7.5 Template Compilation Model............................... 104
7.6 Advice................................................................... 104
8Library Overview 107
8.1 Introduction........................................................... 107
8.2 Standard-LibraryComponents ..............................108
8.3 Standard-LibraryHeaders and Namespace................................. 109
8.4 Advice................................................................... 110
9Strings and Regular Expressions 111
9.1 Introduction........................................................... 111
9.2 Strings................................................................... 111
9.3 StringViews.......................................................... 114
9.4 Regular Expressions.............................................. 116
9.5 Advice................................................................... 122
10 Input and Output123
10.1 Introduction........................................................... 123
10.2 Output................................................................... 123
10.3 Input...................................................................... 125
10.4 I/OState ................................................................127
10.5 I/Oof User-Defined ypes ....................................128
10.6 Formatting .............................................................129
10.7 FileStreams ..........................................................130
10.8 StringStreams .......................................................130
10.9 C-styleI/O .............................................................131
10.10 FileSystem ...........................................................132
10.11 Advice................................................................... 136
11 Containers137
11.1 Introduction........................................................... 137
11.2vector..................................................... 138
11.3list............................................................... 142
11.4map................................................................. 144
11.5unordered_map...................................................... 144
11.6 ContainerOverview.............................................. 146
11.7 Advice................................................................... 148
12 Algorithms149
12.1 Introduction........................................................... 149
12.2 Useof Iterators...................................................... 150
12.3 IteratorTypes ........................................................153
12.4 StreamIterators .....................................................154
12.5 Predicates.............................................................. 155
12.6 AlgorithmOverview............................................. 156
12.7 Concepts(C++20) .................................................157
12.8 ContainerAlgorithms ...........................................160
12.9 Parallel Algorithms............................................... 161
12.10 Advice................................................................... 161
13 Utilities163
13.1 Introduction........................................................... 163
13.2 ResourceManagement ..........................................164
13.3 RangeChecking:span.......................................... 168
13.4 SpecializedContainers ..........................................170
13.5 Alternatives........................................................... 174
13.6 Allocators.............................................................. 178
13.7 Time ......................................................................179
13.8 FunctionAdaption ................................................180
13.9 Type Functions...................................................... 181
13.10 Advice................................................................... 185
14 Numerics187
14.1 Introduction........................................................... 187
14.2 MathematicalFunctions ........................................188
14.3 NumericalAlgorithms ..........................................189
14.4 ComplexNumbers ................................................190
14.5 RandomNumbers .................................................191
14.6 Vector Arithmetic.................................................. 192
14.7 NumericLimits .....................................................193
14.8 Advice................................................................... 193
15 Concurrency 195
15.1 Introduction........................................................... 195
15.2 Tasks andthreads.................................................. 196
15.3 Passing Arguments ................................................197
15.4 ReturningResults ..................................................198
15.5 SharingData ..........................................................199
15.6 Waiting for Events ................................................200
15.7 CommunicatingTasks ...........................................202
15.8 Advice................................................................... 205
16 History and Compatibility207
16.1 History.................................................................. 207
16.2 C++Feature Evolution ..........................................214
16.3 C/C++Compatibility ............................................218
16.4 Bibliography......................................................... 222
16.5 Advice................................................................... 225
Index 227

教学资源推荐
作者: (美)Ira Pohl
作者: [美]梁勇(Y. Daniel Liang)阿姆斯特朗亚特兰大州立大学 著
作者: 钱丽萍 汪立东 张健 编著
参考读物推荐
作者: 谢贤芳 古万荣 等编著
作者: 刘铭 陈雪峰 李钢 秦琼 著