char/short/int/long/float/double 等。if/else/while/for/switch/break/continue。typedef、#define、enum、struct。this、成員指標、智慧指標等),不可或缺。C89 強制區塊開頭宣告;C99 放寬但 MSVC 遲遲不支援。C++ **完全支援**「先使用前宣告即可」:
void func() {
int a = 10;
cout << a; // 使用
int b = 20; // 之後宣告合法
for (int i = 0; i < 10; ++i) { // 迴圈內宣告控制變數
// i 作用域僅限此 for
}
}
優點:縮小變數作用域、減少命名衝突、讓初始化更接近使用點。
boolC 語言用 int 表達真偽(0/非0)。C++ 引入 bool(通常 1 byte),字面值 true/false:
bool flag = (a > b); // 關係運算結果自動轉 bool
if (flag) { /* ... */ }
flag = true; flag = false; // 關鍵字
// 輸出仍為 1/0(歷史相容),可用 boolalpha 操控子輸出 true/false
cout << boolalpha << flag; // 輸出 true/false
建議:邏輯旗標、關係運算結果、開關變數**一律用 bool**,語義清晰且利於編譯器優化。
const 替代 #define 常數// C 風格
#define MAX_SIZE 100
// C++ 風格
const int MAX_SIZE = 100; // 有型別、有作用域、可除錯、可取位址
constexpr int MAX_SIZE2 = 100; // C++11 編譯期常數,更強
&(C 無對應)void swap(int& a, int& b) { // 別名,無需指標語法
int t = a; a = b; b = t;
}
int x=1, y=2; swap(x, y); // 呼叫端無需 & 運算子
參考是「別名」,不可重繫結、不可為空,比指標更安全、語意更清晰。
namespace 解決全域污染C 只有 static 限制連結可見性。C++ 提供模組級命名隔離(詳見命名空間章節)。
C 只有陣列與手寫資料結構。C++ 提供 vector、string、map、sort、find 等工業級組件,極大提升開發效率與安全性。
C++ 不只是「加了類別的 C」,而是在保留 C 效能與靈活性的前提下,引入**型別安全(bool、const、參考)**、**模組化(namespace、class)**、**資源管理(RAII、智慧指標)**、**泛型程式(template、STL)** 等現代語言特性。理解這些改進細節,能幫助 C 程式設計師平滑遷移並發揮 C++ 真正威力。