| 維度 | C 語言 | C++ |
|---|---|---|
| 程式設計範式 | 面向過程 | 多範式 (面向物件、泛型、面向過程) |
| 核心抽象單位 | 函數 | 類別 |
| 資料與行為 | 分離 (結構體 + 函數) | 封裝 (類別內部綁定) |
| 標準庫風格 | 函數式 (stdio.h, string.h) | 物件導向 + 模板 (STL, iostream) |
C 語言使用 struct 僅能組合資料,成員預設 public,無存取控制。C++ class 提供 public, private, protected,實現資訊隱藏。
C 語言需手動模擬 (結構體嵌套 + 函數指標),極易出錯。C++ 原生支援單繼承、多重繼承、虛擬函數與純虛擬函數 (介面),實現執行期多型。
C 語言不支援同名函數,需命名如 add_int, add_float。C++ 允許同名函數參數列表不同,並支援預設引數值。
C 語言僅能靠巨集或 void* 實現泛型,型別不安全。C++ 模板提供型別安全的程式碼複用,STL (標準模板庫) 是其集大成者 (vector, map, algorithm 等)。
malloc/free 手動管理,無建構子/解構子概念。new/delete 自動呼叫建構子/解構子,支援 RAII (資源獲取即初始化),搭配智慧指標 (unique_ptr, shared_ptr) 實現自動資源管理。printf/scanf 格式字串,型別不安全,不可擴充。iostream 運算子多載 (<<, >>),型別安全,可擴充自訂型別輸出。C 語言依賴回傳碼 (errno) 或 setjmp/longjmp,流程混亂。C++ 提供 try/catch/throw 機制,支援堆疊展開與資源自動清理。
extern "C" 連結規範,可在 C++ 中呼叫 C 函數庫,或被 C 呼叫 C++ 函數 (需包裝)。C 是「鋼筆」,精準、底層、適合系統程式、嵌入式;C++ 是「瑞士軍刀」,功能豐富、抽象層次高、適合大型應用、高效能運算、遊戲開發。兩者非取代關係,而是分工協作。