C++ 由 Bjarne Stroustrup 於 1979 年啟動「C with Classes」專案,1985 年首發《The C++ Programming Language》,1998 年獲 ISO 標準化 (C++98),歷經 C++11/14/17/20/23 六大現代標準迭代。本文梳理 C++ 三大發展階段、核心特性演進、標準庫里程碑、微軟工具鏈態度、現代工程化最佳實踐,為技術選型與職業規劃提供全景參考。
vector/sort/iterator 成為日常主力。| 標準 | 年份 | 核心特性 | 工程影響 |
|---|---|---|---|
| C++11 | 2011 | 移動語義、智能指針、Lambda、auto、範圍-based for、<random>/<chrono>/<thread>、constexpr、variadic templates | 徹底改變資源管理、並發編程、元編程方式,「現代 C++」起點 |
| C++14 | 2014 | 泛型 Lambda、返回類型推導、std::make_unique、std::shared_mutex、二進制字面量 | 補齊 C++11 遺漏,工程落地更順滑 |
| C++17 | 2017 | 結構化綁定、if constexpr、std::optional/variant/any/string_view/filesystem、並行算法、折疊表達式 | 標準庫豐富度質變,錯誤處理、文件系統、元編程大幅簡化 |
| C++20 | 2020 | Concepts、Modules、Coroutines、Ranges、<format>/<span>/<source_location>、std::jthread、三向比較 | 語言表達力質變:接口約束、模塊化、異步編程、算法組合 |
| C++23 | 2023 | std::expected/mdspan/flat_map/stacktrace、#elifdef、多維下標操作符 | 錯誤處理標準化、數值計算增強、診斷改進 |
smart_ptr/thread/regex/filesystem/asio/spirit 等先在 Boost 成熟後入標。std::filesystem (C++17) 主導實現、std::format (C++20) 核心貢獻者、Modules (C++20) 首個完整實現、vcpkg 開源包管理器生態建設。/std:c++latest 追蹤最新草案,Clang-CL 提供兼容 MSVC 的 Clang 後端。O(1)/O(log N)/O(N) 經典數據結構與算法,零開銷抽象保證不比手寫 C 慢。
┌─────────────────────┐
│ 領域專業知識 │ ← 圖形學/編譯器/數據庫/嵌入式/金融/游戲
├─────────────────────┤
│ 系統級編程能力 │ ← 內存模型/並發/鎖自由/IO_uring/GPU/分佈式
├─────────────────────┤
│ 現代 C++ 精通 │ ← C++17/20/23 特性、標準庫、元編程、模塊
├─────────────────────┤
│ 數據結構與算法 │ ← 核心竞爭力,語言無關
├─────────────────────┤
│ 計算機系統基礎 │ ← CSAPP: 體系結構/鏈接/加載/虛擬內存/網絡
└─────────────────────┘
virtual 表佈局、sizeof 空類大小、臨時對象生命週期等邊界細節。llvm, folly, abseil-cpp, fmt, spdlog, cereal, catch2。C++ 從「帶類的 C」進化為多範式融合、零開銷抽象、標準庫豐富、工具鏈成熟、生態龐大的系統級開發首選語言。其復雜性源於兼容 C、靜態類型、極致性能三大約束的歷史權衡,但現代 C++ (C++11+) 通過移動語義、智能指針、模塊、協程、Concepts等特性,已將「必要復雜性」壓縮到最小核心,將「工程生產力」推向新高度。對工程師而言,拥抱現代 C++、深耕領域知識、構建系統級思維,是通往技術專家之路的必經之徑。