C++ 相較於 C 語言最大的優勢在於支援面向物件程式設計(OOP),其核心特性為封裝性、繼承性與多態性。封裝將資料與操作資料的函式綁定在一起,不僅使程式結構更緊湊,更提升了資料安全性;繼承增強了軟體擴充性與程式碼重用;多態讓設計者能以更高層次的抽象處理問題,利於維護與重用。Visual C++ 不只是編譯器,更是完整的應用程式開發環境,配合 C++ 的 OOP 特性可開發專業級 Windows 應用程式。
C 語言的 struct 僅能將多個相關變數包裝成一個整體,成員只能是資料,不能包含函式。因此它只能描述物件的「狀態」(屬性),無法描述「行為」(方法)。
C++ 延伸了 struct,允許在其中定義成員函式。範例:
struct Point {
int x, y;
void output() {
cout << x << endl << y << endl;
}
};
void main() {
Point pt; pt.x = 0; pt.y = 0;
pt.output(); // 呼叫成員函式
}
此時結構體已具備「狀態+行為」的基本物件特徵。
class 與預設存取控制差異將 struct 換成 class 即為類別定義。兩者語法幾乎相同,核心差異在於預設存取層級:
struct:預設 public(所有成員對外可見)class:預設 private(成員僅類別內部可存取)範例:
class Point {
int x, y; // 私有
void output() { cout << x << endl << y << endl; } // 私有
};
若在 main() 中嘗試存取 pt.x 或呼叫 pt.output(),編譯器會報錯:「無法存取私有成員」。

圖 1:在類別外部存取私有成員導致編譯錯誤
為控制成員可見性,C++ 提供三種存取指定詞:
| 存取層級 | 類別內部 | 衍生類別 | 類別外部 |
|---|---|---|---|
| public | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✗ |
| private | ✓ | ✗ | ✗ |
良好實務:資料成員設為 private,透過 public 成員函式(存取器/修改器)提供受控存取,這就是封裝的精髓。
iostream 基礎C++ 提供型別安全、可擴充的 I/O 流機制,取代 C 的 scanf/printf:
cin(標準輸入)搭配 >> 運算子cout(標準輸出)搭配 << 運算子cerr(標準錯誤輸出)同 <<優點:無需格式字串,編譯器自動根據型別處理輸入輸出。範例:
int i; cin >> i; // 自動處理整數輸入
cout << "Value: " << i << endl; // endl 換行並刷新緩衝區
需包含 <iostream>(現代標準)或 <iostream.h>(舊式)。
// 這是註解/* 多行註解 */右大括號後必須加分號:
class MyClass { ... }; // 別漏了分號!
struct MyStruct { ... };
| 特性 | C struct | C++ struct | C++ class |
|---|---|---|---|
| 包含資料 | ✓ | ✓ | ✓ |
| 包含函式 | ✗ | ✓ | ✓ |
| 預設存取 | public | public | private |
| 支援繼承 | ✗ | ✓ | ✓ |
| 支援多態 | ✗ | ✓ | ✓ |
掌握結構體到類別的演進,理解封裝與存取控制,是學習 C++ 面向物件程式設計的第一步。後續將深入探討建構子/解構子、繼承機制、虛擬函式與多態實作等核心主題。