![[中英对照] 通过示例学习 C++:涵盖 C++11 至 C](/storage/uploads/1256_cfe8f84a-256f-4115-846f-4f56a31b43b6.jpg)
![[中英对照] 通过示例学习 C++:涵盖 C++11 至 C](/storage/uploads/1256_b279b02e-00b0-48e6-84c1-22433769dd8e.jpg)
![[中英对照] 通过示例学习 C++:涵盖 C++11 至 C](/storage/uploads/1256_8ee44447-f863-4b2d-accd-b455f5bbf241.jpg)
资源介绍
++23 版本(双语对照版电子书)
本书结构清晰,从基础回顾到进阶特性逐步展开,共包含 9 个核心章节与多个附录资源,各章节围绕具体项目或游戏展开,让读者在实践中学习 C++ 特性。
(一)开篇内容
开篇的前言、致谢、关于本书等部分,介绍了作者的 C++ 从业经历、写作背景及本书的适用人群。作者拥有多年金融领域 C++ 开发经验,还担任 ACCU 组织《Overload》杂志编辑,确保内容兼具实用性与专业性。
(二)核心章节
第一章:重新认识 C++
该章节阐述了 C++ 的重要性、适用场景、学习本书的原因及学习方法。介绍了 C++ 的广泛应用,从嵌入式系统、操作系统到游戏、浏览器等领域均有涉及。还提及 C++ 由 ISO 的 WG21 工作组负责更新,每三年一个新标准,同时给出了学习建议,如借助 C++ Insights 和 Compiler Explorer 等工具辅助学习。
第二章:容器、迭代器与范围
以生成帕斯卡三角形为项目,讲解容器(重点是 vector)、迭代器和范围的使用。包括创建和显示 vector、生成帕斯卡三角形(涉及移动语义、完美转发),以及利用范围和 format 库优化输出。还探讨了帕斯卡三角形的特性,如每行首尾元素为 1、每行元素个数与行数一致等,同时引入断言进行代码测试。
第三章:字符串与数字输入
围绕猜数字游戏,讲解字符串和数字的输入处理。从固定数字猜谜,到随机数字猜谜,再到质数猜谜,逐步深入。介绍了 std::optional 处理可选输入、std::function 与 lambda 实现验证和反馈,以及随机数生成(包括随机设备、引擎和分布的搭配使用)和质数判断方法。
第四章:时间点、时长与字面量
借助倒计时功能,介绍 std::chrono 库的时间点、时长等概念。包括计算到年末的时长、理解时长(涉及比率、时长转换、字面量后缀)、时间的输入输出与格式化,以及时区处理。还提及了 C++20 中 chrono 库的新特性,如 year_month_day 类型等。
第五章:对象与数组的创建和使用
通过创建扑克牌组和 “比大小” 卡牌游戏,讲解类与数组的使用。包括使用限定作用域枚举定义花色、强类型定义牌面值、构造函数与默认值设置、数组创建牌组,以及利用 std::variant 支持普通牌与王牌,同时介绍了比较运算符的默认生成等特性。
第六章:智能指针与多态
以 “blob 赛跑” 项目,讲解类继承、多态与智能指针。定义抽象基类 Blob,派生具体类如 StepperBlob(固定步长移动)和 RandomBlob(随机步长移动),介绍了虚函数、纯虚函数、智能指针(如 unique_ptr)的使用,以及类型特性(type_traits)检查类的特殊成员函数。
第七章:关联容器与文件
基于 “答案拼接” 游戏,介绍关联容器(如 map、multimap)与文件操作。包括硬编码数据构建游戏、利用 map 存储键值对(涉及 pair、tuple 与结构化绑定)、文件读取数据(处理 CSV 文件),以及使用 std::sample 从容器中随机选取元素。
第八章:无序映射与协程
以 “猜硬币正反面” 游戏,介绍无序映射(unordered_map)与协程。包括使用 unordered_map 存储游戏状态、std::hash 处理哈希值,以及协程的创建与使用(包括 promise_type、Task 类型的实现),展示了协程在异步处理中的应用。
第九章:参数包与 std::visit
通过生成三角形数和构建老虎机游戏,讲解参数包与 std::visit。包括利用 iota 和 partial_sum 生成三角形数、参数包的展开(如折叠表达式)、std::visit 处理变体类型,以及老虎机游戏中的 reels 旋转、赔付计算等功能实现,综合运用了前面章节的多种特性。
(三)附录资源
附录整理了各章节提及的参考资源,包括相关博客、文档、工具链接等,方便读者进一步深入学习。
三、书籍特点
示例驱动:每个章节围绕具体项目或游戏展开,将 C++ 特性融入实际开发场景,避免枯燥的理论讲解,让读者在实践中理解和掌握知识。
覆盖全面:涵盖 C++11 到 C++23 多个版本的核心特性,从容器、迭代器到智能指针、协程,从基础语法到高级特性,内容系统且全面。
注重实践与测试:强调代码测试,引入断言、静态断言等测试手段,同时提供了代码的 GitHub 仓库链接,方便读者获取代码并实践。
兼顾新旧开发者:对有 C++ 基础但生疏新版本特性的开发者,可快速回顾并掌握新特性;对想深入学习现代 C++ 的读者,能系统了解新方法与新思想。
工具辅助:推荐了 C++ Insights、Compiler Explorer 等实用工具,帮助读者理解代码背后的逻辑,辅助学习和调试。
Learn C++ by Example