封装

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