| 維度 | C | C++ |
|---|---|---|
| 編程範式 | 面向過程 | 多範式(過程+對象+泛型+函數式) |
| 核心抽象 | 函數 + 結構體 | 類 + 模板 + 概念(C++20) |
| 內存管理 | 手動 malloc/free | RAII、智能指針、new/delete |
| 標準庫 | 精簡(字符串、數學、I/O) | 豐富(STL 容器、算法、線程、文件系統) |
| 類型系統 | 靜態、弱類型檢查 | 靜態、強類型、類型推導、概念約束 |
| 錯誤處理 | 返回碼、errno、setjmp/longjmp | 異常、錯誤碼、Expected/Optional(C++23) |
| 編譯複雜度 | 低,編譯快 | 高,模板實例化、重載解析耗時 |
| 階段 | C 語言 | C++ |
|---|---|---|
| 入門 | 《C Primer Plus》(Stephen Prata) | 《C++ Primer》(Stanley Lippman 等) |
| 進階 | 《C專家編程》(Peter van der Linden) | 《Effective C++》系列(Scott Meyers) |
| 專家 | 《C語言接口與實現》(David Hanson) | 《C++ 標準庫》(Nicolai Josuttis) |
| 參考 | C11/C17 標準草案 (N1570) | C++20/23 標準 (cppreference.com) |
強烈建議:先精通 C,再學 C++,切勿同時並行
C 思維 → C++ 思維 關鍵轉變:
1. malloc/free → new/delete → 智能指針/容器 (RAII)
2. 結構體 + 函數 → 類 (封裝數據與操作)
3. 函數指針 → 虛函數/std::function/lambda
4. 宏/void* 泛型 → 模板/概念 (類型安全泛型)
5. 錯誤碼傳遞 → 異常/Result 類型
6. 手動資源管理 → 作用域綁定生命週期
| 場景 | 推薦語言 | 理由 |
|---|---|---|
| 單片機/嵌入式裸機 | C | 資源極受限,編譯器成熟,二進制體積可控 |
| Linux 內核/驅動 | C | 社區規範、ABI 穩定、無異常/RTTI 開銷 |
| 高頻交易/遊戲引擎 | C++ | 零開銷抽象、模板元編程、內存布局控制 |
| 大型業務系統/框架 | C++ | 模塊化、泛型庫、類型安全、生態豐富 |
| 跨平台庫開發 | C 接口 + C++ 實現 | C ABI 穩定便於多語言綁定,內部用 C++ 提效 |