「學會 C++ 容易,精通 C++ 需 5 年工業界經驗。
C 和 C++ 編程思維**完全不同**,學 C++ 前請**忘掉 C**。」
| 維度 | C (面向過程) | C++ (多範式) |
|---|---|---|
| 核心抽象 | 函數 + 結構體 | 類 (封裝/繼承/多態) + 模板 (泛型) + RAII |
| 資源管理 | 手動 malloc/free、fopen/fclose | 構造/析構、智能指針、容器、鎖守衛 — **RAII 自動化** |
| 錯誤處理 | 返回碼、errno、setjmp/longjmp | 異常 (Exceptions) + 錯誤碼雙軌、契約式編程 |
| 代碼組織 | .c/.h、模塊化 | 命名空間、模塊 (C++20)、概念、ADL、SFINAE |
| 標準庫 | 極簡 (string.h/stdlib.h) | STL (容器/算法/迭代器) + iostream + filesystem + thread + ranges |
new/delete 或更好 make_unique/shared_ptr + 容器;std::string/std::format (C++20);std::vector、std::shared_ptr、線程池、HTTP Server (Boost.Asio/asio)。嘗試「一心二用」學 C 和 C++ 會導致雙輸。先精通 C (指針/內存/系統調用),再全身心投入 C++,轉型期約 3-6 個月,之後回頭看 C 代碼會覺得「原始但清晰」。