现代 C++ 实践导读
现代 C++ 实践导读
时间:2026/05/08
这组笔记按“对象语义 -> 内存与所有权 -> 并发 -> 设计模式 -> 网络与协程 -> 常用工具 -> 泛型与编译期 -> 工程实践”的顺序整理。
不建议按最早写作顺序读,建议优先按下面的编号顺序走。
1. 推荐阅读顺序
- 对象生命周期、特殊成员函数与移动语义
- 智能指针与所有权
- allocator、自定义内存分配与 pmr
- 生产者-消费者模式与阻塞队列
- 线程同步消息队列与线程池
- 工厂模式、多态与接口设计
- 游戏常见设计模式
- 对象布局、栈堆与未定义行为
- 网络服务基础:TCP 粘包、线程模型与 HTTP(S)
- C++20 协程入门与实践
- 现代 C++ 常用工具类型
- ranges 与 views
- 错误处理与
expected、异常设计 - 内存泄漏检测与管理
- STL 容器、迭代器与算法实践
- 编译模型、链接与 CMake 入门
- 测试、调试与 Sanitizer 工具链
const正确性、API 设计与现代属性constexpr、consteval与编译期计算实践- C++20 concepts 与泛型接口约束
- 常用标准库组件:
format、chrono、filesystem与source_location - 依赖管理与包管理:FetchContent、vcpkg、Conan
2. 这次整理做了什么
这套笔记经历了两轮整理:
- 把错名、重复和草稿笔记重构成清晰主题
- 把空白或过短内容补成可复习版本
- 新增一篇缺失但非常常用的工具类型笔记
- 补上了
ranges/views、错误处理设计,以及内存泄漏检测与管理这三块现代 C++ 高频主题 - 补上了 STL 容器算法、编译链接/CMake、测试调试/Sanitizer 这三块工程实践基础
- 补齐 API 设计、编译期计算、concepts、常用标准库组件、依赖管理这五块后续缺口,并尽量配了可直接复习的代码示例
3. 如果时间有限
优先看这 10 篇:
- 生命周期、特殊成员函数与移动语义
- 智能指针与所有权
- STL 容器、迭代器与算法实践
- 现代 C++ 常用工具类型
- 错误处理与
expected、异常设计 const正确性、API 设计与现代属性constexpr、consteval与编译期计算实践- C++20 concepts 与泛型接口约束
- 编译模型、链接与 CMake 入门
- 测试、调试与 Sanitizer 工具链
这几篇最直接影响现代 C++ 的工程写法。之后再看线程池、协程、ranges、网络和包管理。
4. 后续还可以补的主题
这次已经补齐了 API 设计、编译期计算、concepts、常用标准库组件和依赖管理。
如果继续扩展,比较值得补的是:
- 模块化与 C++20 modules 实践
- 完美转发、引用折叠与泛型工厂
- 类型擦除:
std::function、自定义 type erasure 与多态替代 - ABI 稳定性、PImpl 与动态库接口设计
- 性能基准测试:Google Benchmark、profiling 与性能回归
- 日志、配置、序列化等常见工程基础设施设计
5. 按实例复习的路线
如果想边看边练,可以优先按这些例子复习:
- 生命周期实例:手写资源类、Rule of Five、返回值优化
- 所有权实例:
unique_ptr/shared_ptr/weak_ptr、自定义 deleter - 并发实例:阻塞队列、线程池、停止协议、任务返回值
- 设计模式实例:注册表工厂、对象池、状态模式、命令模式
- 网络实例:长度前缀拆包器、I/O 线程 + 业务线程池分层
- 协程实例:最小
generator,理解co_yield和协程帧生命周期 - 泛型实例:
concepts约束 range、策略对象接口、静态多态 - 工程实例:CMake target、Sanitizer、FetchContent/vcpkg/Conan 依赖接入