access function。 private なメンバ変数の取得や変更を行うための publicメンバ関数を指す。

代表的なものに、ゲッターとセッターがある。

ゲッター

getter(accessor)。 メンバ変数の値を読み取るための関数。

通常は、constメンバ関数として定義し、const オブジェクトからも呼べるようにする。

class Battery
{
private:
    float energy_ {};
 
public:
    float energy() const
    {
        return energy_;
    }
};

返り値は、型や用途に応じて値、参照、const 参照などが選ばれる。 小さい型なら値で返すのが自然なことが多い。

セッター

setter(mutator)。 メンバ変数の値を変更するための関数。

メンバ変数を書き換えるため、通常は非 constメンバ関数になる。

class Battery
{
private:
    float energy_ {};
 
public:
    void setEnergy(float energy)
    {
        energy_ = energy;
    }
};

命名

ゲッターとセッターの名前には、いくつかの慣習がある。

  • getValue() / setValue()
  • value() / setValue()
  • value() / value(newValue) のようなオーバーロード

どれが正しいというより、コードベース全体で一貫していることが重要である。

補足

  • すべての private メンバに必ずアクセス関数が必要とは限らない
  • セッターを安易に公開すると、不変条件を崩しやすくなることがある
  • 単なる値の公開ではなく、必要な操作だけを public にする設計のほうが自然な場合も多い

関連

参考