学习大纲#

使用提示#

先看 基础 之后随意.

阅读顺序上, 基础 严格从上到下, 其他可以从上到下.

看书必须看前言, 技术书往往在前言写明了适用人群和阅读方法等.

常用网络资源#

更多见于 我的 C++ 浏览器书签 (2024/08/30) (右键另存为再导入到浏览器)我的 C++ 订阅源 (2024/08/30) (右键另存为再导入浏览器 feedbro 插件).

基础#

严格从上到下.

入门#

看书记得看前言! 看书记得看前言! 看书记得看前言!

《Programming: Principles and Practice Using C++, 3rd Edition》(天鹅书, 个人译为《程序设计:使用C++的原理与实践(第3版)》, 第二版译本错译为《C++程序设计:原理与实践(第2版)》)

提示

我为这本好书做了 一个学习项目文件: 为天鹅书第三版制作的学习项目文件 (解压以使用), 解压后打开 "请读我" 文件查看使用说明 (例如需要安装 Git: 通过官网下载).

个人认为最好最优雅的程序设计入门书, 我的 C++ 传授、答疑、学习方法高度基于 本书第二版第 0 章本书第三版第 0 章 (强烈推荐阅读!). 请注意我的说法和书名的翻译: 这本书的主题是 程序设计, 也就是表达代码意图所需的思想、技术和工具. C++ 语言是我们的主要工具, 因此我们比较详细地描述了很多 C++ 语言的特性. 但请记住, C++ 只是一种工具, 而不是本书的主题. 本书是 “用 C++ 语言进行程序设计”, 而不是 “C++ 和一点程序设计理论”.

本书 2024 年 4 月 12 日出版, 教授当代 C++ (C++20 和 C++23) 并涵盖众多程序设计思维、方法, 但却相较于第 2 版缩减了一半篇幅!

在第 0 章, 它会给出书籍配套的资源网站, 其中给出了部分示例代码、部分习题解答、更多参考资料、 PPP Style Guide (天鹅书风格指南) 等资源.

目前本书没有翻译, 但建议使用这本书——哪怕是 DeepL 机翻 (电脑可以用 "沉浸式翻译", 平板可以用 "MarginNote (+ DeepL 插件)"). 如果实在不太习惯英文书, 可以用下方 "以前的入门书三选一" 里的书. 但记得看我附在书名后的短评!

入门之后#

工具链#

终端使用#

项目管理: CMake#

包管理: Conan#

格式化工具: clang-format#

静态检查工具: clang-tidy#

抽象思维#

泛型编程#

并发#

最佳实践#

  • 《Effective Modern C++》

  • 《Beautiful C++ - 30 Core Guidelines for Writing Clean, Safe, and Fast Code, 1st edition》

  • 《C++ Best Practices》

  • 《Embracing Modern C++ Safely》

  • C++98

    • 《Effective C++ Digital Collection》

      • 《Effective C++》

      • 《More Effective C++》

      • 《Effective STL》

    • 《Exceptional C++ Collection》

      • 《Exceptional C++》

      • 《More Exceptional C++》

      • 《Exceptional C++ Style》

深入语言#

显然, 这部分内容不是几个资料就能学全的 (其他部分也不是!), 因此此处仅选择了一些内容列出, 更多见于 常用网络资源.

设计与演化#

  • 《The Design and Evolution of C++》(《C++语言的设计与演化》)

  • 《A History of C++ - 1979-1991》

  • 《Evolving a Language in and for the Real World - C++ 1991-2006》

  • 《Thriving in a crowded and changing world - C++ 2006-2020》

扩展阅读#

难以分类和未分类的.

  • 《Large-Scale C++ Volume I - Process and Architecture》

  • 《The Art of Writing Efficient Programs》

  • C++98

    • 《C++ In Action》

    • 《Inside the C++ Object Model》(《深度探索 C++ 对象模型》)

    • 《STL源码剖析》

    • 《C++ Template Metaprogramming - Concepts, Tools, and Techniques from Boost and Beyond》

程序设计风格#

更多见于 常用网络资源.