学习路线图
嘿!当您看到这个界面的时候,肯定就是比较迷茫了对吧!如果您的确是新人,第一次接触C++甚至是编程,多多少少听说过C++是一个比较难以入门的语言。是的。没办法否认,这个语言的历史包袱比较重,一门语言1000种写法,很容易滑落到语言律师,最后希望解决现实生产的需求的时候举手无措。这个小仓库其实就是希望尝试递出一个解决方案。
我们期待每一卷,走完之后都能有点思考和收获。C++的确是一门厚重的语言,每一个语法都有可能折射出厚重的历史遗产。这是我相信LLM时代AI教不了你的,也难以培养的。但是这是一个艰难的过程——不然的话,您不会来到这里了,对吧。
本页只回答三个问题:咱们该怎么学、从哪开始、每一卷都教什么。想直接开走的,往下就是路径选择与总览的卡片。想逐卷摸底的,逐卷详解一站一站给您展开。只想确认某卷写完了没有,文末的内容成熟度给您定性的判断。
您手上拿着的是学习路线图,答的只是怎么学。项目自身的开发进展与发版规划是另一回事,到了文末咱们再把两者分开。
按背景选起点
您现在的底子决定起点,不必从卷一的第一页读起。零基础或只会 C 的,咱们把起点放在新手起步卷,卷一紧跟在它的后面。有 C 或嵌入式经验、缺现代写法的,卷二是您补课的地方,补完扎进卷八的实战。已经会 C++ 的,按自己的目标直取专题就行。卡片里一站一站的胶囊可以直接点,点了就跳到对应的卷。
路径 A · 零基础 / 仅会 C
没写过程序,或者只会 C、想转现代 C++
路径 B · 有 C 或嵌入式经验
语法底子够,想补现代 C++ 写法、直奔系统与嵌入式实战
十卷总览
下面的卡片墙给出每个条目的定位、难度、前置与状态,您点卡片进卷,点本页详解就跳到下方对应的段落。咱们把主线排成卷一到卷十。新手起步和编译与链接深入不算在十卷的序列里,但是一个垫在开头,一个横在工程实践的旁边,卡片墙里也给它们各留了一张卡。
逐卷详解
您往下读的时候,条目的顺序就是学习路径的顺序:从新手起步读起,紧跟着的是卷一,编译与链接深入则放在卷七的旁边。每个条目都交代了定位、主题、难度与前置,末尾附上笔者的节奏建议。条目的长短随内容走,有的卷几行就讲完了,有的卷值得多铺几行。
新手起步
您要是零基础,这里就是为您准备的入口,它的位置排在卷一之前。整卷的内容从编辑器和编译器是什么讲起,到您把第一个程序在编辑器里跑通,再到多文件工程的组装交给 CMake,让 clangd 的补全和红线好使起来,全程都配了真实的截图,您照着点就能走完。装环境装不动、程序跑不起来这类卡在门外的问题,这一卷里也都解决了。
难度是入门级的,前置用不着您带。已经有编程底子的话,这一卷您可以整卷跳过,回头环境出了问题再来查。您把它走完,卷一的语法课才不会悬在半空。
卷一 · 基础入门
卷一是全仓的地基,咱们从环境与类型系统讲到面向对象、模板初步与异常,末尾还给您备了一份 C 语言速通,指针、结构体对齐、嵌入式 C 的惯用法都在里面。您跟着它走完,后面的卷才有共同词汇,这也是它排在最前面的原因。
这卷的难度从入门铺到中级,前置您一样都不用带。零基础的读者从头读,有 C 底子的读者可以跳过 C 速通,值类别、面向对象、模板初步这几块值得您多花时间,它们决定了后面的路顺不顺。这一卷咱们正在重写,章节的安排可能调整,主题的范围不变,读到了安排突兀的地方也属正常。
卷二 · 现代特性
会写 C++ 与会写现代 C++ 的分水岭在卷二。移动语义、右值引用、智能指针与所有权是这一卷的重头,语法层的 constexpr、lambda、结构化绑定跟着到位,再加 enum class、variant、optional、expected 这组类型安全的工具,凑成您往后每一卷都要用的底座。
这卷的难度到中级为止,前置一卷就够了。这一卷值得您精读,跳读的收益不高。后面的并发、性能、领域实战,都默认您把移动语义和智能指针内化了。全卷的内容已经成型,咱们还在逐篇打磨措辞与示例,个别篇目的行文风格略有出入,内容不受它的影响。
卷三 · 标准库深入
卷三管标准库的底层机制,而且早已不止容器和字符串。咱们把它分成了六个子目录,容器、字符串、迭代器与算法是数据结构这边的一组,IO 流、时间与数值、错误处理与工具设施是日常开发那边的一组,全都完工了。vector 怎么扩容、迭代器什么时候失效、string 的小字符串优化怎么省内存,这类标准库替您做了什么的问题,您在这里都能读到答案。
难度是中级的,卷一与卷二是它要的前置。篇幅已经不小了,按需挑读最合适:做性能敏感的开发就啃容器与字符串,跟 IO 打交道多的就看 IO 那一组。整卷的内容都已成型,您从哪一篇当入口都行。
卷四 · 高级主题
您要写库、要写高性能泛型代码,卷四就是绕不开的一卷。卷顶摆着协程基础与调度器的实现,还有三路比较、空基类优化和 MSVC 的 Modules。往下的三条模板子线按标准年代排:C++11/14 打模板的基础,到了 C++17 接的是模板技术与 Ranges,C++20/23 讲的是元编程,concepts、requires 表达式、静态反射都在元编程的这一段里,收尾的小 STL 项目把全线的工具串起来用了一遍。设计模式另成了一条独立的线,经典模式已经齐了。
难度是高级的,卷二与卷三是它的门槛。模板子线顺着年代读是最省力的走法,concepts 与 requires 是现代模板代码的通用语言,建议您在进元编程之前把它吃下来。协程、三路比较、Modules 这些您按需直取就好,不必按目录的顺序走。
卷五 · 并发编程
卷五讲的是并发,咱们把次序排得很克制:正确在性能的前面,锁的位置比无锁靠前,同步原语又排在任务队列的前面。章节从并发基础与线程的生命周期起步,走到 atomic 与内存模型的章节,后面的并发数据结构、future 与线程池、异步 IO 与协程依次跟上,Actor 与 Channel 也各占了一章,末尾两章管的是调试测试与分布式衔接。
这一卷是全仓动手项目最重的一卷,Lab 与 Capstone 都是围绕它展开的,另有配套的练习区。Lab 0/1 带了完整的脚手架,您可以直接上手写。Lab 2 到 Capstone 眼下还只有手册的文字,脚手架是待补的状态,做的时候需要您自己搭架子。难度给到了中高的档位,卷一到卷四您都得备齐。
卷六 · 性能优化
咱们把卷六整卷按测量方法论重排过了:它从性能思维与基准测试的方法讲起,中间是 CPU 微架构的机制,再往后学的是把性能问题归因到具体的瓶颈部位,跟着就是按瓶颈的调优。多核性能、C++ 抽象的成本、编译器与代码大小各自成章。
这一卷想改掉的习惯是凭感觉优化:算法复杂度不等于硬件上的真实表现,您动手调优之前得有测量数据。难度到了中高这一档,建议您在卷五之后来读,代码跑不快的时候回来翻是最合适的。
卷七 · 工程实践
卷七管的是工程落地:CMake 的基础、交叉编译、编译器选项、链接器与链接脚本,再到 WSL 开发、MSVC 调试原理、VS2026 的 Modules,全都收在了卷里。文件拷贝器实战咱们走了一遍从需求与框架到核心实现的完整路径,方向实践则给不同方向的读者留了入口。
难度是中级的,这一卷还在建设的中途。建议您把它与编译与链接深入配着读,机制与工具两头都对上了,工程的问题才排查得动。
编译与链接深入
这一卷给您回答编译器与链接器在背后做了什么:源码怎么变成了可执行的文件,静态库与动态库的差别在哪,符号是怎么被找到、又是怎么找不到的,undefined reference 这类报错卡在了哪一步。静态库单独占了一篇,动态库从设计的原则一路讲到符号可见性、运行时加载、检索逻辑与可执行化,全卷的内容已经完成。
难度是中级的,有 C++ 的基础就能读。做交叉编译、设计动态库的 ABI、排查链接报错之前,这一卷都值得您过一遍,与卷七配着读的效果最好。
卷八 · 领域应用
卷八把现代 C++ 放进了具体的领域,各子域的进度差异很大,咱们按完工程度分开说。
系统编程子域已经整卷完工了,咱们在 Linux 与 Windows 两边并行:同一个主题,Linux 这边讲的是 POSIX,Windows 那边讲的是 Win32,每篇的文末把两边的概念互相接上。进程、内存、文件 IO、IO 多路复用、终端、时间这些章节都齐了,跨平台的抽象与公共工具收在了卷尾,IO 多路复用一章直接衔接到网络子域的 epoll。
嵌入式是主线所在的子域,还在建设的路上:f103 的主线在走,ZerOS 手搓 RTOS 的起步篇已经就位,f407 的部分还空着占位。网络子域从传统的 socket 讲到现代的封装,再进 epoll 与 Reactor 的模式,还配了 mini-reactor 的 Lab。TinyML 子域带您手搓推理器,指针语义深潜与 mini-STL 数据结构两个专题供您深挖。算法、数据存储、GUI 这些子域还只是占了个位,测试子域倒是连占位页都没有。
难度的起点在中级,各子域的前置不同:系统编程与网络建议排在卷一到卷七的后面读,嵌入式要求您手头有板子,学到外设的章节对照着实操。
卷九 · 开源项目学习
咱们在卷九拆的是工业级的源码,目前的焦点集中在 Chromium 上,OnceCallback 的回调设计、WeakPtr 的弱指针都已成篇,flat_map 与 no_destructor 的专篇也备好了。前置的 deducing this 与 move_only_function,卷里也写了专门的深潜。
难度是中高的,卷一到卷七都是它的前置,卷四与卷五的底子尤其要紧。它是源码阅读导向的卷,建议您把模板与并发都过完了再进。
卷十 · 课程与演讲笔记
卷十是会议演讲的笔记与二次创作,目前的选集集中在 CppCon 2025:Bjarne Stroustrup 讲 concept-based 的泛型编程,Matt Godbolt 的《Some Assembly Required》带您把汇编读起来,Mike Shah 讲的是 Ranges,Ben Saks 讲的是移动语义,两堂都是 Back to Basics 系列的课,另有 std::optional 的演进、微基准怎么撒谎、缓存友好 C++ 这些专题。
难度是中级的,前置从卷一铺到了卷五。它的用法是深化:学完了对应的卷,回头把那场笔记读了,学过的东西就能再夯实一遍。您把它穿插在主线之间读就好,单靠它是撑不起主线的。
学习节奏与建议
零基础的话,您从新手起步卷进卷一,这样走是最省心的。有底子的读者按上面的路径跳读,严格顺着卷序走是最稳的。跳读的代价是某些前置概念得回头补,补的时候各卷的目录都能当索引用。
全程走完是一项长期的工程,您别指望速成。咱们建议按卷设目标,每卷的示例您都动手敲一遍,读与写的比例至少保持在一比一。
每周一些题适合您当课后练习:读完卷一就能上手做了,一周会出一包新的题,您在浏览器里写下代码,判的结果也在同一个浏览器里。您学完一块就来一包,手感就断不了了。
练手是同一个道理:您学完哪块,就去贯穿式实战项目的索引里挑对应的项目,协程服务器、并发运行时、嵌入式这类项目练完了,零散的知识就串成了一个能跑的整体。
配套资源
- C++ 特性参考卡:C++98 到 C++26 的速查,按标准版本与功能类别双视图组织,每张卡标注嵌入式适用性。
- 贯穿式实战项目:项目索引页,把散在各卷的实战串起来。
- 社区文章:社区来稿与审阅的收录,也欢迎您投稿。
- 卷十课程笔记:会议演讲的笔记与二次创作,深化用。
- 每周一些题:在线做题栏目,一周一包题,欢迎投稿出题。
- 崩溃实验室:故意崩给您看的调试实录,每个案子都有出错的代码、修好的版本与排查的过程。
- 附录 · 术语表:中英文技术术语的对照,拿不准一个词的标准译名时来查。
内容成熟度
哪些卷的内容已经成型、哪些还在建设当中,下面的组件给的是同一套定性判断:已成型表示全卷就位了,您可以放心读,在建表示内容还在持续地增加或重写。您据此排计划即可,不必把它当成质量的排序。
- 新手起步环境搭建到第一个程序,配图齐全
- 卷二 · 现代特性十二章全就位,正在逐篇打磨
- 卷三 · 标准库深入容器、字符串、迭代器与算法、IO、时间数值、错误处理六个子方向完工
- 卷四 · 高级主题协程、concepts、元编程、Ranges、设计模式就位
- 卷五 · 并发编程十章加练习区,Lab 0/1 脚手架可直接上手
- 卷六 · 性能优化测量方法论八章重构完成
- 编译与链接深入全卷完成,卷七的前置
- 卷一 · 基础入门正在重写为全栈入门,章节可能微调
- 卷七 · 工程实践主干章节就位,实战线推进中
- 卷八 · 领域应用系统编程已完工;嵌入式、TinyML、网络、指针深潜、mini-STL 推进中
- 卷九 · 开源项目学习Chromium 四个组件研读完成
- 卷十 · 课程与演讲笔记CppCon 2025 七场完工,持续加场
- 每周一些题一周一包题,持续出题中
- 崩溃实验室内存安全篇就位,继续添新案
- 卷八更多子域算法、数据存储、GUI、测试
- 卷五 Lab 2–5 脚手架手册文字已就位,脚手架代码待补
- 卷九更多项目在 Chromium 之外挑选新目标
项目自己每一步在做什么、按什么样的节奏发版,咱们归拢在另外两份文档里:项目开发路线图收录了维护节奏、发布治理与站点的演进,版本变更记录则记下了每个已发布版本改了什么。