初学者

入门,没有编程经验

Book Author(s) Description review
 C++ 入门*

* Not to be confused with C++ Primer Plus (Stephen Prata), with a significantly less favorable review. |
Stanley Lippman、Josée Lajoie 和 Barbara E. Moo(针对 C++11 进行了更新) |
这是对 C++ 的非常全面的介绍,共 1000 页,以易于理解的格式和详细内容涵盖了该语言的几乎所有内容。第五版(2012 年 8 月 16 日发布)涵盖了 C++11。 | [Review] | | _
编程:使用 C++ 的原理和实践_
|
Bjarne Stroustrup,第二版 - 2014 年 5 月 25 日(针对 C++11/C++14 进行了更新) |
由该语言的创建者介绍如何使用 C++ 进行编程。这是一本很好的读物,假设没有任何编程经验,但不仅适合初学者。 | |

入门,有编程经验

Book Author(s) Description review
 C++ 之旅
Bjarne Stroustrup(C++17 第二版,C++20 第三版)
该“导览”是对所有标准 C++(语言和标准库,以及使用 C++11)的快速(大约 180 页和 14 章)教程概述,其水平中等,适合已经了解 C++ 或至少了解 C++ 的人经验丰富的程序员。本书是构成《C++ 编程语言》第四版第 2-5 章材料的扩展版本。
 加速C++
Andrew Koenig 和 Barbara Moo,第一版 - 2000 年 8 月 24 日
这基本上涵盖了与 C++ Primer 相同的内容,但只占用了四分之一的空间。这主要是因为它并不试图成为编程入门,而是为以前使用其他语言编程过的人介绍 C++。它有一个更陡峭的学习曲线,但是,对于那些能够应对这一点的人来说,这是对该语言的非常紧凑的介绍。

(从历史上看,它是第一本使用现代方法教授该语言的初学者书籍,从而开辟了新天地。)尽管如此,它所教授的 C++ 纯粹是 C++98。 | [Review] |

 最佳实践

Book Author(s) Description review
 有效的C++
斯科特·迈耶斯,第三版 - 2005 年 5 月 22 日
编写本书的目的是成为 C++ 程序员应该阅读的最好的第二本书,并且它成功了。早期版本针对的是来自 C 语言的程序员,第三版改变了这一点,并针对来自 Java 等语言的程序员。

它以一种非常容易理解(并且令人愉快)的方式呈现了约 50 条易于记忆的经验法则及其基本原理。对于 C++11 和 C++14,示例和一些问题已经过时,应首选“Effective Modern C++”。 | [Review] | |  有效的现代 C++ | Scott Meyers |
本书面向从 C++03 过渡到 C++11 和 C++14 的 C++ 程序员。本书可以看作是上一本书——《Effective C++》部分内容的延续和“修正”。它们不涵盖相同的内容,但保留相似的基于项目的主题。 | [Review] | |  有效的STL | Scott Meyers |
其目的是对来自 STL 的标准库部分执行与 Effect C++ 对整个语言所做的相同操作:它提供了经验法则及其基本原理。 | |


 中间的

Book Author(s) Description review
 更有效的 C++ Scott Meyers
甚至比Effective C++ 更多的经验法则。不像第一本书中的那么重要,但仍然很高兴知道。
 卓越的 C++ Herb Sutter
以一组谜题的形式呈现,除了深入介绍包括 pimpl 在内的各种其他主题之外,它还通过资源获取初始化 (RAII) 对 C++ 中的正确资源管理和异常安全进行了最好、最彻底的讨论之一。习语、名称查找、良好的类设计和 C++ 内存模型。 [Review]
 更优秀的C++ Herb Sutter
除了讨论 C++ 中有效的面向对象编程和正确使用 STL 之外,还涵盖了 Exceptional C++ 中未涵盖的其他异常安全主题。 [Review]
 卓越的 C++ 风格 Herb Sutter
讨论通用编程、优化和资源管理;本书还很好地阐述了如何使用非成员函数和单一职责原则在 C++ 中编写模块化代码。 [Review]
 C++ 编码标准
赫伯·萨特和安德烈·亚历山德雷斯库
这里的“编码标准”并不意味着“我的代码应该缩进多少空格?”本书包含 101 个最佳实践、习惯用法和常见陷阱,可以帮助您编写正确、易理解且高效的 C++ 代码。 [Review]
[_
C++ 模板:完整指南_](https://rads.stackoverflow.com/amzn/click/com/0201734842)
大卫·范德沃尔德和尼古拉·M·约苏蒂斯
这是一本关于 C++11 之前存在的模板的书。它涵盖了从基础知识到一些最高级的模板元编程的所有内容,并解释了模板如何工作的每个细节(概念上和实现方式),并讨论了许多常见的陷阱。

附录中对单一定义规则 (ODR) 和重载解析进行了精彩的总结。涵盖 C++11、C++14 和 C++17 的第二版已经发布。 | [Review] | | _
C++ 17 - 完整指南_
|  尼古拉·M·约苏蒂斯 |
本书描述了 C++17 标准中引入的所有新功能,涵盖从简单的“内联变量”、“constexpr if”一直到“多态内存资源”和“使用过度对齐的数据新建和删除”的所有内容’。 | [Review] | | _
C++ 20 - 完整指南_
|  尼古拉·M·约苏蒂斯 |
本书介绍了 C++20 的所有新语言和库功能。它通过示例和背景信息涵盖了每个新功能的动机和背景。

重点是这些功能如何影响日常编程、将它们结合起来意味着什么,以及如何在实践中从 C++20 中受益。 (注意,本书是分步出版的,第一版现已完成。) | | |  C++ 实践 |  巴托斯·米勒夫斯基 |
本书通过从头开始构建应用程序来解释 C++ 及其功能。 | [Review] | | _
C++ 函数式编程_
| Ivan Čukić |
本书介绍了现代 C++(C++11 及更高版本)的函数式编程技术。对于那些想要将函数式编程范式应用于 C++ 的人来说,这是一本非常好的读物。 | |


 先进的

Book Author(s) Description review
 现代 C++ 设计  安德烈·亚历山德雷斯库
一本关于高级泛型编程技术的开创性书籍。

介绍基于策略的设计、类型列表和基本的泛型编程习惯,然后解释使用泛型编程可以高效、模块化和干净地实现多少有用的设计模式(包括小对象分配器、仿函数、工厂、访问者和多方法) 。 | [Review] | | _
C++ 模板元编程_
|
大卫·亚伯拉罕斯和阿列克谢·古尔托沃伊 | | | | _
C++ 并发实践_
|  安东尼·威廉姆斯 |
一本涵盖 C++11 并发支持的书,包括线程库、原子库、C++ 内存模型、锁和互斥体,以及设计和调试多线程应用程序的问题。涵盖 C++14 和 C++17 的第二版已经发布。 | [Review] | | _
高级 C++ 元编程_
|  达维德·迪·根纳罗 |
C++11 之前的 TMP 技术手册,更注重实践而不是理论。本书中有大量片段,其中一些片段因类型特征而变得过时,但了解这些技术仍然有用。

如果你能忍受古怪的格式/编辑,它比 Alexandrescu 更容易阅读,而且可以说更有价值。

对于更有经验的开发人员来说,您很有可能会发现一些有关 C++ 的黑暗角落(怪癖)的东西,而这些东西通常只有通过丰富的经验才能获得。 | | |
大规模 C++ 第一卷,流程和架构 (2020) | John Lakos |
扩展旧书“大规模 C++ 设计”的三部分系列的第一部分。 Lakos 解释了管理大型 C++ 软件项目的久经考验的技术。

如果您在大型 C++ 软件项目中工作,那么这是一本很好的读物,其中详细介绍了物理结构和逻辑结构、组件策略及其重用之间的关系。 | [Review] |


参考风格 - 所有级别

Book Author(s) Description review
[_
C++ 编程语言_](https://rads.stackoverflow.com/amzn/click/com/0321958322)
Bjarne Stroustrup(针对 C++11 进行了更新)
C++ 创建者对 C++ 的经典介绍。与经典的 K&R 类似,它读起来确实非常相似,涵盖了从核心语言到标准库、从编程范式到语言哲学的几乎所有内容。   [审查]
Note: All releases of the C++ standard are tracked in the question “Where do I find the current C or C++ standard documents?”.
[_
C++ 标准库教程和参考_](https://rads.stackoverflow.com/amzn/click/com/0321623215)
Nicolai Josuttis(针对 C++11 进行了更新)
C++ 标准库的介绍和参考。第二版(2012 年 4 月 9 日发布)涵盖了 C++11。 [Review]
[_
C++ IO 流和区域设置_](https://rads.stackoverflow.com/amzn/click/com/0201183951)
安吉丽卡·兰格和克劳斯·克雷夫特
关于这本书没什么可说的,除了如果你想了解有关流和语言环境的任何信息,那么这是找到明确答案的地方。 [Review]