封裝
成員函式的常見用途是使用訪問器 (通常稱為 getter)和 mutator (通常稱為 setter) 進行封裝,而不是直接訪問欄位。
class Encapsulator {
int encapsulated;
public:
int get_encapsulated() const { return encapsulated; }
void set_encapsulated(int e) { encapsulated = e; }
void some_func() {
do_something_with(encapsulated);
}
};
在類中,encapsulated
可以被任何非靜態成員函式自由訪問; 在課堂之外,訪問它是由成員函式管理,使用 get_encapsulated()
讀取它,set_encapsulated()
修改它。這可以防止對變數的無意修改,因為使用單獨的函式來讀取和寫入變數。 [關於 getter 和 setter 是否提供或打破封裝有很多討論,對這兩種說法都有很好的論據; 這種激烈的爭論超出了這個例子的範圍。]