探索现代C++
探索现代C++
简介:
引言
《探索现代C++》(英文原名 Discovering Modern C++)由Peter Gottschling所著——这并非又一本语言入门书,而是一本面向已掌握C++基础、希望掌握其现代特性的读者编写的全面教程。2021年版涵盖了C++11、C++14、C++17和C++20标准,使其成为当今最前沿的指南之一。全书共608页,内容紧凑但结构清晰。
这本书讲什么?
本书以循序渐进的方式深入探讨现代C++的关键机制。作者不浪费篇幅解释基本语法(变量、循环、函数),而是直接切入那些区分专业C++与教学C++的主题:
- 智能指针(unique_ptr, shared_ptr, weak_ptr)与无内存泄漏的内存管理。
- 移动语义(move semantics)与完美转发(perfect forwarding)。
- Lambda表达式与闭包——从简单到带状态捕获的复杂用法。
- 模板(templates)——从基础到可变参数模板(variadic templates)和SFINAE。
- 标准模板库(STL)——容器、算法、迭代器、函数对象。
- 并行与多线程——std::thread、互斥锁、原子操作、futures。
- C++17/20新特性——std::optional、std::variant、std::any、概念(concepts)、协程(coroutines)和范围(ranges)。
- 性能——如何编写高效代码以及如何进行性能分析。
这本书适合谁?
本书面向已经使用C++编程(或使用其他编译型语言)并希望转向现代标准的程序员。它将有助于:
- 处理C++98/03遗留代码并希望对其进行现代化的开发者。
- 学习系统编程的高年级理工科学生。
- 从C或Java转向C++并需要深入理解语言惯用法的工程师。
- 所有准备参加大型IT公司(Google、Microsoft、JetBrains等)C++面试的人。
读者将学到什么?
阅读本书后,您将能够:
- 使用智能指针和RAII编写安全高效的代码。
- 理解并应用移动语义以优化性能。
- 通过模板和概念创建泛型算法。
- 使用lambda表达式进行简洁的数据处理。
- 处理多线程与同步,避免数据竞争。
- 应用C++17/20中的新类型(optional、variant、any)编写更具表现力的代码。
- 设计用户友好的库和API。
本书优势
1. 时效性。本书涵盖了直至C++20的标准,包括协程和范围等新特性。这在2021-2023年的英文出版物中也属罕见。
2. 深度适中。作者通过可直接运行和实验的示例解释复杂主题(例如SFINAE或移动语义)。同时,他避免陷入学术细节,而是专注于实际应用。
3. 结构清晰。每章以简短介绍开始,以总结和练习结束。练习并非“编写一个计算器”,而是检验对现代机制理解的任务(例如,实现自己的unique_ptr或编写一个可与任何容器配合使用的模板函数)。
4. 代码质量。所有示例均可编译,并在多个编译器(GCC、Clang、MSVC)上经过验证。作者还提供了关于编译器版本和编译选项选择的建议。
5. 性能关注。书中包含大量关于性能的内容。