學習階段劃分
階段 0:鞏固基礎(2-4 週)
- C++ 核心語法:指標/參考、const 正確性、RAII、複製/移動語義
- STL 容器、演算法、迭代器、函數物件實戰
- 專案:實作簡易
vector、string、shared_ptr
階段 1:現代 C++ 核心(4-8 週)
| 主題 | 關鍵知識點 | 實戰建議 |
| C++11/14/17/20 新特性 | auto、lambda、智慧指標、結構化綁定、概念、模組、協程 | 重構階段 0 專案使用新特性 |
| 模板進階 | 變參模板、SFINAE、type traits、CRTP、表達式模板 | 實作簡易型別安全的格式化庫 |
| STL 源碼剖析 | allocator、RB-tree、hashtable、演算法實現細節 | 閱讀 <vector>、<unordered_map> 實現 |
| 併發程式設計 | thread、mutex、condition_variable、atomic、memory model、lock-free | 實作無鎖佇列、執行緒池 |
階段 2:系統與效能工程(持續深入)
- 編譯鏈深度:前端解析、AST、中端優化、後端代碼生成、鏈接模型
- 記憶體管理:自定義分配器、記憶體池、對齊、快取友好設計、NUMA 感知
- 效能分析:perf、VTune、valgrind、火焰圖、PGO、基準測試
- 作業系統互動:系統呼叫、虛擬記憶體、檔案系統、網路協議棧、epoll/io_uring
階段 3:領域專精(按興趣選擇)
- 高效能計算:SIMD、GPU (CUDA/HIP)、MPI、OpenMP
- 遊戲引擎:ECS 架構、渲染管線、物理模擬、腳本綁定
- 金融/交易系統:低延遲網路、定點數學、風控引擎
- 嵌入式/裸機:RTOS、裝置驅動、編譯器屬性、連結腳本
- 編譯器/工具鏈:LLIR、Clang Plugin、靜態分析、LSP 實現
必讀經典書單(按推薦順序)
- 《C++ Primer》第 5 版 —— 入門聖經,覆蓋 C++11,必須逐行敲完習題
- 《Effective C++》/《More Effective C++》/《Effective Modern C++》 —— Scott Meyers 三部曲,工程落地指南
- 《C++ 模板完全指南》 —— Vandevoorde & Josuttis,模板元編程權威
- 《STL 源碼剖析》 —— 侯捷,透過源碼理解容器本質
- 《深入理解計算機系統》(CSAPP) —— Randal Bryant,硬體/軟體介面視角,跳著讀第 2、3、6、9、10、12 章
- 《C++ 並發程式設計實戰》 —— Anthony Williams,併發實戰聖經
- 《優化 C++ 程式效能》 —— Kurt Guntheroth,效能調優實戰
高質量資源與社群
- C++ Reference: cppreference.com(唯一權威文檔)
- C++ Core Guidelines: GitHub(Bjarne & Herb 維護)
- 會議影片:CppCon、C++Now、Meeting C++(YouTube 免費)
- 開源專案研讀:
fmt、spdlog、folly、abseil-cpp、boost 核心模組
避坑指南
❌ 只看書不敲碼 → ✅ 每個知識點寫最小可驗證程式
❌ 追新特性不懂底層 → ✅ 理解編譯器如何降級實現(如 lambda → 函數物件)
❌ 獨自閉門造車 → ✅ 參與開源貢獻,Code Review 是成長最快捷徑
❌ 忽視 C 語言基礎 → ✅ C++ 建立在 C 記憶體模型之上,指標/UB 理解必須扎實
里程碑專案建議
- 實作一個 記憶體分配器(arena/pool/stack allocator)
- 實作一個 無鎖資料結構(MPSC 佇列/無鎖棧)
- 實作一個 簡易編譯器前端(詞法/語法分析 + AST)
- 實作一個 高效能網路框架(Reactor/Proactor + io_uring)
- 為開源專案貢獻 效能優化 PR