C++知识地图

这页不是单纯目录,而是用来说明 C/C++ 知识之间的依赖关系。C++ 的学习路线不应该过早分叉:基础语法、必要指针/内存、C++ 进阶、OOP 和 STL 都是通用核心。完成通用核心后,再按目标进入历史代码维护 / 学校课程加深,或现代 C++ 开发加深。

主线关系

共享基础
  -> 基础语法
  -> 输入输出
  -> 分支 / 循环 / 函数
  -> 数组 / 字符串 / 基本数据组织
 
通用核心
  -> 指针 / const / 基础内存模型
  -> 枚举 / 结构体 / 预处理 / 文件操作
  -> cpp进阶
  -> 面向对象
  -> STL
 
分叉点:STL 初识之后
 
分支 A:历史代码维护 / 学校课程加深
  -> C 语言知识地图 / C 兼容层 / 存储类型 / malloc free
  -> new/delete / 手动资源管理
  -> 对象特性 / 继承 / 多态细节
  -> 模板基础
  -> 深水区按需查阅
 
分支 B:现代 C++ 开发加深
  -> RAII / 智能指针
  -> nullptr / 初始化 / auto / lambda / optional
  -> 右值引用 / 移动语义 / constexpr 基础
  -> 标准库容器与算法组合使用
  -> 模板基础
  -> 工程实践
  -> 并发
 
C++ 深水区:按问题查阅,不作为新手主线必经阶段

1. 共享基础

2. 通用核心

这部分不分学习群体,学校课程、历史代码维护和现代开发都应该掌握。

  1. CandCpp指针
  2. CandCpp指针进阶
  3. CandCppconst
  4. CandCpp数据变量进阶
  5. CandCpp枚举
  6. CandCpp结构体
  7. CandCpp预处理
  8. CandCPP文件操作
  9. CandCpp底层知识
  10. cpp进阶
  11. cppOOP知识地图
  12. STL初识

STL初识 后再分叉。这样不会把 C++ 的进阶语法、OOP 和 STL 拆成不同人群的专属内容。

深水区入口规则

主线文件不展开复杂机制,但遇到下面问题时要给出 cpp深水区 入口,避免深水区只形成单向链接:

主线阶段只保留在主线的内容需要跳转的深水区入口
指针 / 底层知识地址、指针、栈/堆的基本概念所有权模型未定义行为
OOP / 构造析构构造、析构、拷贝的常见写法cpp对象生命周期cpp特殊成员函数
多态虚函数、接口抽象、运行期替换cpp对象模型与内存布局
STL / 返回对象容器使用、按值返回的直觉cppRVO与返回值优化cpp异常安全
现代 C++ 移动语义std::move、移动构造、移动赋值cpp值类别cpp完美转发与引用折叠
模板基础函数模板、类模板、常见泛型接口cpp模板偏特化cpp类型萃取cppSFINAE与约束cpp模板实例化与ODR

判断标准:如果解释需要对象布局、生命周期边界、值类别、异常安全等级、模板替换规则、ODR 或未定义行为,就不要继续堆在主线,改为链接到对应深水区主题。

3. 分支 A:历史代码维护 / 学校课程加深

这条路线适合学校课程、考试、教材和维护偏 C 风格的老代码。

  1. C语言知识地图
  2. C语言类型转换规则
  3. C语言指针细节
  4. C语言结构体
  5. C语言联合体
  6. C语言位域
  7. C语言存储类型
  8. C语言系统栈与过程调用
  9. C语言MallocFree
  10. c语言常用库
  11. cppNewAndDelete操作符
  12. cpp对象特性
  13. cpp构造函数调用规则
  14. cpp深拷贝和浅拷贝
  15. cpp模板编程知识地图
  16. cpp深水区

这条分支的重点是理解历史包袱、C 兼容层、手动资源管理和传统对象规则。它适合看懂教材、考试题和旧代码,但不代表新代码都应该这样写。

4. 分支 B:现代 C++ 开发加深

这条路线适合新开发者、业务开发、工具开发和希望快速写出可维护 C++ 的学习者。

  1. 现代cpp
  2. RAII
  3. 智能指针
  4. nullptr
  5. 最佳初始化
  6. 新遍历方法
  7. auto
  8. lambda
  9. 右值引用
  10. 移动语义
  11. optional
  12. constexpr
  13. 函数后关键字
  14. cpp模板编程知识地图
  15. cpp工程文件案例
  16. cpp多线程知识地图

这条分支的重点是优先建立标准库、RAII、封装和可维护代码习惯。通用核心里的指针、底层知识和 OOP 用来支撑理解,不作为第一选择的业务代码模板。

5. 底层与资源管理

6. 进阶语法

7. 面向对象

8. STL

学习顺序上,先会用 STL,再回头理解模板机制更顺:先建立 vectorstringmap、算法和迭代器的使用经验,再学模板为什么能支撑这些泛型能力。

如果问题涉及迭代器失效、异常安全、返回值是否会拷贝、容器移动后还能不能用,主线只保留常见结论,机制解释转到 cpp异常安全cppRVO与返回值优化cpp值类别

9. 模板基础

模板是 STL 和现代 C++ 泛型能力背后的机制:STL 容器、算法、智能指针、类型萃取、concepts 都建立在模板机制之上。

初学阶段先会写简单函数模板、类模板,并能看懂常见标准库泛型接口。特化、可变参数模板、类型萃取、SFINAE、concepts 和模板元编程可以后续按需学习。

模板主线不要展开替换失败、偏特化匹配、ODR 和复杂约束规则;这些问题统一转到 cpp模板偏特化cpp类型萃取cppSFINAE与约束cpp模板实例化与ODR

10. 现代 C++ 常用写法

现代 C++ 的学习目标是让代码更安全、更清楚、更容易维护,不是追逐所有新语法。以 C++20 为基准时,普通开发者应先掌握核心必会内容;高阶内容按项目问题查阅和补强。

右值引用移动语义完美转发 已经讲不清“表达式到底是什么值类别”“为什么转发后重载选择变了”,转到 cpp值类别cpp完美转发与引用折叠

11. C++ 深水区

这部分不建议放到新手主线里。它更适合在写过 OOP、STL、智能指针和模板后,用来解释“为什么现代 C++ 要这样写”。深水区作为按问题查阅的旁支索引,不参与主链分叉。

12. 工程与案例

待补

  • STL 迭代器、算法、lambda 的联合示例。
  • 现代 C++ 与异常安全的关系图。

相关维护页:待补主题及具体维护规则