面向對象程式設計(Object Oriented Programming, OOP)是現代軟體工程主流範式。本文系統梳理 OOP 八大核心概念,並說明 C++ 如何落地實現。
public/protected/private)隱藏內部實現,提供穩定介面。| 概念 | C++ 實現機制 |
|---|---|
| 類別/對象 | class/struct 關鍵字,支援構造/析構函數、this 指針 |
| 封裝 | public/protected/private 存取指定符,friend 破壞封裝 |
| 繼承 | 單繼承/多重繼承,虛繼承解決菱形問題,override/final (C++11) |
| 多態 | 虛函數 virtual、純虛函數 =0、抽象類別、RTTI、dynamic_cast |
| 泛型程式設計 | 模板(函數模板、類別模板、變參模板、概念 C++20),靜態多態基石 |
| 資源管理 | RAII、智慧指針(unique_ptr, shared_ptr)、移動語義 |
class Shape { // 抽象基類
public:
virtual double area() const = 0; // 純虛函數
virtual ~Shape() = default;
};
class Circle : public Shape {
double r_;
public:
Circle(double r) : r_(r) {}
double area() const override { return 3.14159 * r_ * r_; }
};
class Rect : public Shape {
double w_, h_;
public:
Rect(double w, double h) : w_(w), h_(h) {}
double area() const override { return w_ * h_; }
};
// 多態使用
void printArea(const Shape& s) {
std::cout << s.area() << '\n'; // 動態綁定
}
C++ 引入 OOP 概念顯著增加語言複雜度。建議學習路徑:
OOP 不是銀彈,但配合泛型程式設計、元程式設計,構成了 C++ 強大的抽象能力。理解概念本質,勝過死記語法細節。