以下の内容はhttps://toburau.hatenablog.jp/entry/20101027/1288191999より取得しました。


メンバ関数より、メンバでもfriendでもない関数を使う

Effective C++ 第4章23項

メンバ関数より、メンバでもfriendでもない関数を使おう。それによって、カプセル化の度合いを増し、柔軟性と機能拡張性を持たせることになる。

これはまだ読んでもいまいちしっくりきていない。
本を読みながら、自分なりにサンプルコードを考えてみる。
たとえばRPGのプレイヤーキャラクターを表すクラスがあり、メンバ関数としてHP回復とMP回復があったとする。

class Player {
public:
    void HealHP();
    void HealMP();
};

ここで全回復するという機能を考える。プレイヤークラスにその機能を追加すると次のようなコードに。

class Player {
public:
    void HealHP();
    void HealMP();
    void HealAll() {
        HealHP();
        HealMP();
    }
};   

メンバ関数としてではなく、メンバでない関数で機能を実装するとすると、

void HealAll(Player& player) {
    player.HealHP();
    player.HealMP();
}

つまり、便利関数として機能を用意するということ。




以上の内容はhttps://toburau.hatenablog.jp/entry/20101027/1288191999より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14