C++ 代碼風格**詭譎難測**,同一語言衍生出迥異風格,初學者常誤以為看到不同語言。**研究風格演進規律已成當務之急**。
// 1980s 風格
class stack {
char s[SIZE];
char *min, *top, *max;
void new(); // 構造函數名為 new!
public:
void push(char);
char pop();
};
| 階段 | 年份 | 核心特性 | 風格影響 |
|---|---|---|---|
| 帶類的 C | 1979-1983 | 類、封裝、單繼承 | C 風格基因固化 |
| 面向對象擴展 | 1983 | 虛函數、多態、多重繼承 | Simula 風格注入 |
| 商業化與標準化 | 1985-1998 | 模板、異常、RTTI、命名空間、STL | 泛型風格、標準庫風格確立 |
| 現代 C++ | 2011-至今 | 移動語義、lambda、自動類型、概念、模塊、協程 | 函數式風格、元編程風格、系統編程風格並存 |
Stroustrup 將 **C 的高效** 與 **Simula 的優雅** 捆綁,**直接導致風格多樣化**:
即使 C++ 具備「獨立人格」,Stroustrup 仍不斷呼籲:**盡量拋開 C 語言思維方式**,採用資源獲取即初始化 (RAII)、標準庫算法、類型安全介面。
C++ Core Guidelines、Google/llvm/Chromium 風格指南之一,**強制統一**C++ 風格多樣性**非混亂,而是歷史演進地質層的疊加**。從「帶類的 C」的 C 基因,到 Simula OO 注入,再到模板泛型爆發,現代多範式並存。**理解演進軌跡,建立分層風格治理,用工具鏈強制統一**,才能在 C++ 豐富表達力中保持工程秩序。