C++20:完全指南
C++20:完全指南
简介:
引言
尼古拉·约苏蒂斯所著的《C++20:完全指南》(原书名:C++20: The Complete Guide)并非又一本普通的编程语言书籍。这是一部基础性著作,被公认为关于C++20标准最权威的资料来源之一。该书于2022年出版,共476页,涵盖了从根本上改变语言面貌的所有关键新特性。对于专注于深入理解技术的教育网站PythonLib而言,这本书将成为连接经典C++与其现代范式的理想桥梁。
这本书是关于什么的?
尼古拉·约苏蒂斯以其著作《C++17:完全指南》和《C++标准库》而闻名,他再次展示了讲解复杂主题的精湛技艺。本书专门介绍C++20标准中出现的新特性。作者没有重写基础知识,而是聚焦于更新的四大支柱:概念(Concepts)、协程(Coroutines)、模块(Modules)和范围库(Ranges)。此外,还详细讨论了规模较小但重要的改进:三路比较运算符(operator <=>)、基于范围的for循环中的初始化器、改进的常量表达式(constexpr)、新属性以及许多其他内容。
这本书适合谁?
本书严格面向经验丰富的开发者。如果您刚开始学习C++,或者不熟悉C++11/14/17,那么这本书对您来说可能太难了。约苏蒂斯假设读者已经熟练掌握模板、lambda表达式、移动语义和标准库。本书非常适合:
- 从C++17过渡到C++20的程序员;
- 库和框架的开发者;
- 希望采用现代惯用法的软件架构师;
- 希望了解最新标准的教师。
读者将学到什么?
阅读后,您将能够自信地在实践中应用以下特性:
- 概念:如何对模板参数施加约束,使代码自文档化并改进错误信息;
- 协程:无需第三方库即可编写异步代码、生成器和惰性求值的机制;
- 模块:取代过时的头文件模型,加速编译并隔离代码;
- 范围库:以函数式编程风格组合算法,处理无限序列;
- 三路比较运算符(<=>):自动生成比较运算符;
- constexpr扩展:在编译阶段执行复杂计算(包括动态内存分配和虚函数);
- 新类型和语法:char8_t、for循环中的初始化器、指定初始化器以及其他简化日常工作的细节。
本书的优势
首先引人注目的是其结构。每一章都专注于一个特性,并遵循“由浅入深”的原则。约苏蒂斯不仅列举语法,还解释其动机:为什么添加这个特性,它解决了哪些问题,以及存在哪些陷阱。其次是实用性。示例代码可以从作者的GitHub下载,并且确实能在现代编译器(GCC、Clang、MSVC)上运行。第三是诚实。作者公开谈论某些特性尚不成熟(例如,模块的支持仍然有限),这避免了在尝试编译时感到失望。
特别值得一提的是关于协程的章节。这可能是C++20中最难的主题,而约苏蒂斯通过简单的示例剖析协程框架的内部结构(promise_type、awaitable、awaiter),出色地处理了这一主题。