封装
成员函数的常见用途是使用访问器 (通常称为 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 是否提供或打破封装有很多讨论,对这两种说法都有很好的论据; 这种激烈的争论超出了这个例子的范围。]