C 語言 struct 只能包含**資料成員**。C++ class 擴展為**資料 + 函數**的封裝單元:
// C 風格:資料與操作分離
struct Student { char* name; int age; float score; };
void display(Student s) { printf("%s %d %f\n", s.name, s.age, s.score); }
// C++ 風格:資料與操作合一
class Student {
public:
char* name; int age; float score;
void say() { printf("%s %d %f\n", name, age, score); }
};
class 關鍵字定義類別,public: 公開介面(詳見存取權限)。int main() {
Student stu; // 建立物件(實例化)
stu.name = "小明"; // . 存取成員
stu.age = 15;
stu.score = 92.5f;
stu.say(); // 呼叫成員函數
return 0;
}
private、介面 public,隱藏實現細節。C++ 不是「非 OOP 不可」,而是**根據問題選擇最適合的範式**:小工具用面向過程,大型系統用 OOP,容器/演算法用泛型。
| C 專案 | C++ 專案 |
|---|---|
| .h 宣告函數原型 .c 實作函數 模組 = 一組相關函數 | .h 宣告類別 .cpp 實作成員函數 模組 = 一個或多個類別 |