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% 的知识。动手写代码比看书更重要。