
作者:(美)本贾尼·斯特劳斯特鲁普
页数:296
出版社:电子工业出版社
出版日期:2024
ISBN:9787121472503
电子书格式:pdf/epub/txt
内容简介
本书一共19章,以C++20为标准,讲述了现代C++所提供的编程特性。
有其他语言编程经验的读者可以从本书中快速了解C++所具备的功能,从而获得对现代C++更全面的认知,以便更好地了解现代C++语言已经发展到的程度。资深程序员可以从本书作者的整体行文风格中感受到他在设计C++特性时的一些考量及侧重点,了解C++语言在历史上曾经历过的变迁,以及一部分特性为什么会是今天这个样子。
所以,本书适合的读者:有其他语言编程经验,想要了解C++语言的读者;有传统C++编程经验,想要了解现代C++语言特性的读者;有较丰富编程经验且想了解“C++之父”在C++设计过程中的一些设计细节与思路的读者。
作者简介
本贾尼?斯特劳斯特鲁普是 C 的设计者和原始实现者,也是本书及《C 程序设计原理与实践》(第2版)和《C 程序设计语言》(第4版)等领域名著的作者。他目前是哥伦比亚大学教授,之前曾在 AT&T 贝尔实验室、得克萨斯 A&M 大学和摩根士丹利工作。他曾获得无数荣誉,包括因开发和改进 C 编程语言所获的美国国家工程院查尔斯·斯塔克·德雷珀奖。
本贾尼?斯特劳斯特鲁普是 C 的设计者和原始实现者,也是本书及《C 程序设计原理与实践》(第2版)和《C 程序设计语言》(第4版)等领域名著的作者。他目前是哥伦比亚大学教授,之前曾在 AT&T 贝尔实验室、得克萨斯 A&M 大学和摩根士丹利工作。他曾获得无数荣誉,包括因开发和改进 C 编程语言所获的美国国家工程院查尔斯·斯塔克·德雷珀奖。
本书特色
《C++之旅(第3版)(英文版)》内容非常全面,讲解范围从基础知识开始,广泛涵盖更高级的主题,强调更新的语言功能。此版本还包括由主要C++供应商实现的C++20中的许多新功能,如模块、概念、协程和范围,甚至引入一部分计划到C++23才收录的标准库组件。
目录
1.1 引言 …………………………………………………………………………………………………………………. 17
1.2 程序 …………………………………………………………………………………………………………………. 18
1.2.1 Hello, World! …………………………………………………………………………………………. 18
1.3 函数 …………………………………………………………………………………………………………………. 20
1.4 类型、变量与运算 ……………………………………………………………………………………………. 21
1.4.1 算术运算 ………………………………………………………………………………………………. 23
1.4.2 初始化 ………………………………………………………………………………………………….. 24
1.5 作用域和生命周期 ……………………………………………………………………………………………. 25
1.6 常量 …………………………………………………………………………………………………………………. 26
1.7 指针、数组和引用 ……………………………………………………………………………………………. 27
1.7.1 空指针 ………………………………………………………………………………………………….. 29
1.8 检验 …………………………………………………………………………………………………………………. 30
1.9 映射到硬件 ………………………………………………………………………………………………………. 32
1.9.1 赋值 ……………………………………………………………………………………………………… 33
1.9.2 初始化 ………………………………………………………………………………………………….. 34
1.10 建议 ……………………………………………………………………………………………………………….. 35
2 用户自定义类型 …………………………………………………………………………. 37
2.1 引言 …………………………………………………………………………………………………………………. 37
2.2 结构 …………………………………………………………………………………………………………………. 38
2.3 类 …………………………………………………………………………………………………………………….. 39
2.4 枚举 …………………………………………………………………………………………………………………. 41
2.5 联合 …………………………………………………………………………………………………………………. 43
2.6 建议 …………………………………………………………………………………………………………………. 44
3 模块化 ………………………………………………………………………………….. 45
3.1 引言 …………………………………………………………………………………………………………………. 45
3.2 分离编译 ………………………………………………………………………………………………………….. 46
3.2.1 头文件 ………………………………………………………………………………………………….. 47
3.2.2 模块 ……………………………………………………………………………………………………… 49
3.3 命名空间 ………………………………………………………………………………………………………….. 51
3.4 函数参数与返回值 ……………………………………………………………………………………………. 53
3.4.1 参数传递 ………………………………………………………………………………………………. 54
3.4.2 返回值 ………………………………………………………………………………………………….. 55
3.4.3 返回类型推导 ……………………………………………………………………………………….. 56
3.4.4 返回类型后置 ……………………………………………………………………………………….. 56
3.4.5 结构化绑定 …………………………………………………………………………………………… 57
3.5 建议 …………………………………………………………………………………………………………………. 58
4 错误处理 ……………………………………………………………………………….. 59
4.1 引言 …………………………………………………………………………………………………………………. 59
4.2 异常 …………………………………………………………………………………………………………………. 60
4.3 约束条件 ………………………………………………………………………………………………………….. 61
4.4 错误处理的其他替代方式 …………………………………………………………………………………. 63
4.5 断言 …………………………………………………………………………………………………………………. 64
4.5.1 assert() ………………………………………………………………………………………………….. 65
4.5.2 static_assert ……………………………………………………………………………………………. 66
4.5.3 noexcept ………………………………………………………………………………………………… 66
4.6 建议 …………………………………………………………………………………………………………………. 67
5 类 ……………………………………………………………………………………….. 69
5.1 引言 …………………………………………………………………………………………………………………. 69
5.1.1 类的概述 ………………………………………………………………………………………………. 70
5.2 具体类型 ………………………………………………………………………………………………………….. 70
5.2.1 一种算术类型 ……………………………………………………………………………………….. 71
5.2.2 容器 ……………………………………………………………………………………………………… 73
5.2.3 容器的初始化 ……………………………………………………………………………………….. 74
5.3 抽象类型 ………………………………………………………………………………………………………….. 76
5.4 虚函数 ……………………………………………………………………………………………………………… 78
5.5 类层次结构 ………………………………………………………………………………………………………. 79
5.5.1 类层次结构的益处 ………………………………………………………………………………… 81
5.5.














