C++17 详解
C++17 详解
简介:
引言
由 Bartłomiej Filipek 所著的《C++17 详解》一书于 2019 年出版,并迅速成为关于 C++17 新标准最权威的参考资料之一。这并非又一本面向初学者的教程,而是一本深入的技术指南,旨在帮助中高级开发者掌握 C++17 标准的所有关键特性,并学会在实践中加以运用。本书包含 338 页浓缩信息,并辅以代码示例和实用建议。
本书内容是什么?
《C++17 详解》详细剖析了 C++17 标准带来的各项新特性。作者从语言层面到标准库层面,逐一深入探讨了每个特性。在本书中,您将找到:
- 结构化绑定(structured bindings) — 如何将元组、对组和结构体解包为单独的变量。
- if constexpr — 在编译时编译条件分支,从而编写更高效、更简洁的模板代码。
- std::optional、std::variant、std::any — 用于安全处理可选值、替代类型和动态类型的新型包装类型。
- string_view — 一种非拥有型字符串视图,可在不复制的情况下加速子字符串处理。
- 并行算法 — 标准库现在支持算法的并行执行(std::execution::par)。
- 文件系统(std::filesystem) — 跨平台的文件和目录操作。
- constexpr 的改进 — 现在可以编写包含循环、分支甚至(有限制的)动态内存分配的 constexpr 函数。
- 新属性 — [[fallthrough]]、[[maybe_unused]]、[[nodiscard]] 等。
- 模板简化 — 推导指引(deduction guides)、模板参数中的 auto、折叠表达式(fold expressions)。
每一章都遵循“从理论到实践”的原则:首先解释语法和语义,然后展示实际使用示例,最后总结常见错误和建议。
本书适合哪些读者?
本书面向已经具备 C++ 使用经验(至少达到 C++11/14 水平)并希望快速、高质量掌握 C++17 的程序员。它将有助于:
- 从较旧标准迁移到 C++17 的开发者。
- 编写高负载或嵌入式系统、希望利用新特性进行优化的工程师。
- 学习现代 C++ 的高年级学生和教师。
- 所有希望编写更安全、更具表现力且更高效代码的人。
本书不适合初学者——理解书中内容需要扎实掌握 C++ 基础知识(指针、模板、STL)。
读者将学到什么?
阅读本书后,您将能够:
- 在日常工作中自信地使用 C++17 的所有主要新特性。
- 通过结构化绑定和 if constexpr 编写更清晰、更简洁的代码。
- 应用 std::optional 和 std::variant 进行安全的错误处理和替代状态管理。
- 无需外部库即可处理文件系统。
- 使用 STL 中的并行版本加速算法。
- 理解新类型的内部机制,并学会避免常见陷阱。
- 为过渡到 C++20 做好准备,因为 C++17 的许多特性是未来标准的基础。
本书的突出优点
1. 深度与结构。 作者不仅列举特性,还解释了为何引入这些特性、它们解决了哪些问题以及如何正确使用。每章都包含“常见陷阱”部分,这对实践开发者来说非常有价值。
2. 实践导向。