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にする設計のほうが自然な場合も多い