多读一些优秀的书籍,对于开发者稳固编程基础、提高编程技能有很大帮助。但是,大多时候,初学者不知道应该读什么书入门,有一定基础的开发者不知道如何进阶。
本文总结了一个 C++ 优秀书籍清单,希望能够为你带来一定的帮助。这些书大多数都有中文版,并且可以很容易在网上找到。
阶段 1
《Essential C++》
这是一本内容不多但很实用的 C++ 入门书籍,强调快速上手与理解 C++ 编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到 C++ 的函数和结构,也会学习到它们的设计目的和基本原理。
《C++ Primer》
本书对 C++ 基本概念、技术、以及现代 C++ 编程风格进行了全面而且权威的阐述,是 C++ 初学者的最佳指南;本书可以帮助你编写实用的程序,而无需首先精通每个语言细节。对于中高级程序员,本书也是不可或缺的参考书。
阶段 2
《Effective C++》和《More effective C++》
作者是 Scott Meyers。你应该熟读它们,并清楚地理解每个项目。该书围绕 55 条准则,每一条都介绍了一个可让你写出更好的 C++ 程序代码的方法,并以特别设计过的例子详加讨论。
《Exceptional C++(C++编程剖析)》和《More exceptional C++》
这两本书中都包含了 40 个 C++ 编程问题,这些问题会让你磨练自己的技能,最终成为优秀的 C++ 程序员。这些问题是 Herb Sutter 精心挑选,与 ISO/ANSI C++ 官方标准相一致,帮助程序员在设计、架构和编码过程中保持良好的风格,从而使编写的 C++ 软件更健壮、更高效。
阶段 3
《Inside the C++ object model(深度探索 C++ 对象模型)》
本书专注于 C++ 面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承,帮助你理解程序的底层实现,以便写出更高效的代码。
《The design and evolution of C++(C++语言的设计与演化)》
本书作者也是 C++ 语言的设计者 Bjarne Stroustrup,作者在书中综合性地介绍了 C++ 的发展历史,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了 C++ 所适合的应用领域及其未来的发展前景,既没有忽略关键性的详情,又没有过多地陷入技术细节。
阶段 4
《The C++ standard library(C++标准程序库)》
这是标准模板库字典,你可以在本书中找到 STL 相关的一切知识。本书焦点放在标准模板库、检查容器、迭代器、函数对象和 STL 算法上。每一个元素都有深刻的呈现,包括其介绍、设计、运用实例、细节解说、陷阱、意想不到的危险,以及相关类别和函数等。
《Effective STL》
这是 Scott Meyers 的第三本 C++ 专著,也是学习 STL 最权威的书籍。作者对书中的 50 个指导方针都作了详尽的分析,并配以示例。通过这些规则,C++开发者可以最大限度地使用 STL。
《Generic programming and the STL(泛型编程与 STL)》
本书阐述了泛型程序设计的核心理念:concepts(概念)、modeling(模型)和 refinement(改善),并为你展示这些观念如何导出 STL 的基础概念:iterators(迭代器)、containers(容器)和 function objects(函数对象)。按照本书所述,你可以把 STL 想象成一个由 concepts 组成的 library,你将学习到 STL 正式结构并理解其强大的优势。
阶段 5
《Exceptional C++ style》
作者为 Herb Sutter。本书同样提出了 40 个 C++ 风格相关的问题,对一些至关重要的 C++ 细节和相互关系提出了新的见解,为当今的关键 C++ 编程技术(如泛型编程、STL、异常安全等)提供了新的策略,帮助开发者在开销与功能之间、优雅与可维护性之间、灵活性与过分灵活之间寻找完美的平衡点。
《C++ template》
这是一本关于 C++ 模板的完整的参考手册和教程,它强调模板的使用实践,包含了现实世界中的例子。每个 C++ 程序员都应该好好读一读这本书。
《Modern C++ design(现代 C++ 设计)》
作者 Andrei Alexandrescu 为 C++ 程序员打开了一个新的局面。本书提供了一些针对软件设计的前沿方法,如联合设计模式、泛型编程,使程序员可以编写有表现力的、灵活的、高度可重用的代码。
《Thinking in C++(C++编程思想)》
C++ 领域权威著作,介绍了 C++ 实用的编程技术和最佳的实践方法。