Skip to content

C++ 学习路线图

从零基础到能做生产级项目,系统规划 C++ 学习路径。每个阶段都有明确目标和实战项目。

总体路线

阶段一:语言基础(1-2 个月)

阶段二:现代 C++ 核心(1-2 个月)

阶段三:STL 与工具库(1 个月)

阶段四:工程化实践(2 周)

阶段五:专项深入(按需,2-3 个月)
    ├── Web 开发方向
    ├── 系统编程方向
    ├── 高性能计算方向
    └── 嵌入式方向

阶段一:语言基础

目标:能写出正确的 C++ 程序,理解基本语法和内存管理。

必学内容

基础语法
├── 变量、类型、运算符
├── 控制流(if/for/while/switch)
├── 函数(参数传递、重载、默认参数)
├── 数组与指针
├── 引用
└── 命名空间

面向对象
├── 类与对象
├── 构造/析构函数
├── 访问控制(public/private/protected)
├── 继承与多态
├── 虚函数
└── 运算符重载

内存管理
├── 栈与堆
├── new/delete
├── 内存泄漏
└── RAII 基础

实战项目

项目 1:学生成绩管理系统
- 用类封装学生信息
- 文件读写(fstream)
- 基本排序和查找

项目 2:简单计算器
- 表达式解析
- 异常处理
- 命令行交互

阶段二:现代 C++ 核心

目标:掌握 C++11/14/17/20 核心特性,写出地道的现代 C++ 代码。

必学内容

C++11 核心
├── 移动语义与右值引用        → /core/move-semantics
├── 智能指针(unique/shared)  → /core/smart-pointers
├── Lambda 表达式             → /core/lambda
├── auto 类型推导
├── 范围 for 循环
├── std::thread 基础          → /concurrency/thread
└── std::atomic               → /concurrency/atomic

C++14/17
├── constexpr 增强            → /core/constexpr
├── if constexpr
├── 结构化绑定(auto [a,b]=)
├── std::optional             → /stl/optional-variant
├── std::variant
├── std::filesystem           → /stl/filesystem
└── std::string_view          → /stl/string

C++20
├── Concepts                  → /core/concepts
├── Ranges                    → /stl/ranges
├── Coroutines 基础           → /concurrency/coroutines
└── std::format

实战项目

项目 3:JSON 配置解析器
- 使用 nlohmann/json
- 自定义类型序列化
- 错误处理

项目 4:多线程任务队列
- std::thread + std::mutex
- 条件变量
- 线程池实现

阶段三:STL 与工具库

目标:熟练使用 STL 容器和算法,掌握主流工具库。

必学内容

STL 容器
├── vector 深度使用            → /stl/vector
├── map / unordered_map        → /stl/map
├── set / unordered_set        → /stl/set
└── string & string_view       → /stl/string

STL 算法
├── 查找、排序、变换           → /stl/algorithm
├── 数值算法
└── C++20 Ranges               → /stl/ranges

工具库(选择 2-3 个)
├── spdlog(日志)             → /tools/spdlog
├── nlohmann/json(JSON)      → /tools/nlohmann-json
├── fmtlib(格式化)           → /tools/fmtlib
├── CLI11(命令行)            → /tools/cli11
└── GoogleTest(测试)         → /tools/googletest

实战项目

项目 5:命令行工具(类似 jq)
- CLI11 解析参数
- nlohmann/json 处理 JSON
- spdlog 日志
- GoogleTest 单元测试

项目 6:HTTP API 客户端
- libcurl 发送请求
- JSON 解析响应
- 错误处理与重试

阶段四:工程化实践

目标:能搭建完整的 C++ 项目工程,掌握构建、测试、CI/CD。

必学内容

构建系统
├── CMake 现代实践             → /engineering/cmake
├── CMakePresets.json
└── vcpkg 或 Conan             → /engineering/vcpkg

代码质量
├── clang-format(格式化)
├── clang-tidy(静态分析)     → /engineering/clang-tidy
└── AddressSanitizer           → /engineering/asan

CI/CD
├── GitHub Actions             → /engineering/cicd
└── Docker 多阶段构建          → /engineering/docker

实战项目

项目 7:完整工程化模板
- CMake + vcpkg 项目结构
- clang-format + clang-tidy 配置
- GitHub Actions CI(多平台 + Sanitizers)
- Docker 多阶段构建
- GoogleTest 测试套件

阶段五:专项深入

Web 开发方向

学习路径:
cpp-httplib(快速原型)→ Crow(REST API)→ Drogon(高性能)→ Boost.Asio(底层)

推荐顺序:
1. cpp-httplib          → /web/cpp-httplib    (1 天上手)
2. Crow                 → /web/crow           (2 天)
3. Drogon + 协程        → /web/drogon         (1 周)
4. Boost.Asio           → /web/asio           (2 周)
5. gRPC C++             → /web/grpc           (1 周)

实战项目:
- RESTful API 服务(用户管理、认证、CRUD)
- WebSocket 聊天室
- gRPC 微服务

系统编程方向

学习路径:
内存模型 → 并发编程 → 无锁数据结构 → 性能优化

推荐顺序:
1. 内存模型深度         → /core/memory-model
2. std::atomic          → /concurrency/atomic
3. std::mutex & 锁      → /concurrency/mutex
4. Intel TBB            → /concurrency/tbb
5. 性能分析             → /engineering/profiling

实战项目:
- 高性能日志系统
- 无锁队列实现
- 内存池分配器

高性能计算方向

学习路径:
OpenMP → TBB → SIMD → GPU(CUDA)

推荐顺序:
1. OpenMP               → /concurrency/openmp
2. Intel TBB            → /concurrency/tbb
3. Google Benchmark     → /tools/benchmark
4. 性能分析工具         → /engineering/profiling

实战项目:
- 并行矩阵乘法
- 图像处理加速
- 数值模拟

学习资源推荐

书籍

入门:
《C++ Primer》(第5版)— 最全面的入门书
《Accelerated C++》— 快速入门

进阶:
《Effective C++》— Scott Meyers,必读
《Effective Modern C++》— Scott Meyers,C++11/14
《C++ Concurrency in Action》— 并发编程圣经

深入:
《C++ Templates》— 模板元编程
《The C++ Programming Language》— Bjarne Stroustrup

在线资源

官方文档:
https://cppreference.com    — 最权威的 C++ 参考
https://isocpp.org          — C++ 标准委员会

学习网站:
https://learncpp.com        — 免费系统教程
https://cppinsights.io      — 查看编译器如何展开代码
https://godbolt.org         — 在线编译器,查看汇编

代码规范:
https://isocpp.github.io/CppCoreGuidelines/  — C++ 核心指南

里程碑检查

✅ 阶段一完成标志:
   能独立实现链表、栈、队列等数据结构
   理解指针、引用、内存管理

✅ 阶段二完成标志:
   能用 RAII 管理所有资源
   理解移动语义,能正确实现五法则/零法则
   能写出类型安全的模板函数

✅ 阶段三完成标志:
   能用 STL 算法替代手写循环
   能快速集成第三方库
   有完整的单元测试

✅ 阶段四完成标志:
   能从零搭建完整 C++ 项目
   CI 自动运行测试和静态分析
   能用 Docker 部署

✅ 专项完成标志:
   能独立完成一个完整的生产级项目
   能分析和优化性能瓶颈
   能 code review 他人的 C++ 代码

给初学者的建议

不要追求一次学完所有内容。先把阶段一到四走完,做出一个完整项目,再根据实际需求深入专项。C++ 的深度是无限的,但 80% 的日常开发只需要 20% 的知识。动手写代码比看书更重要。

最后更新:

系统学习 C++ 生态,深入底层架构