C++ 程式兩大要素:程式陳述式(函式)與程式資料。封裝將資料與操作資料的函式綁定,避免外界干擾誤用,衍生出資料隱藏概念。
C++ 透過 class 的 public、protected、private 實作封裝。預設成員為 private。
class Box {
public:
double getVolume() { return length * breadth * height; }
private:
double length, breadth, height; // 僅類別內部可存取
};
若需對外公開,於成員前加 public。將類別宣告為 friend 會暴露實作細節,降低封裝性,理想做法是盡可能隱藏實作。
#include <iostream>
using namespace std;
class Adder {
public:
Adder(int i = 0) { total = i; }
void addNum(int number) { total += number; } // 介面
int getTotal() { return total; } // 介面
private:
int total; // 隱藏資料
};
int main() {
Adder a;
a.addNum(10); a.addNum(20); a.addNum(30);
cout << "Total " << a.getTotal() << endl; // 60
return 0;
}
成員預設設為 private,除非確實需要公開。此原則適用於資料成員、虛擬函式等所有成員,確保良好封裝性。