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


friendクラスは継承されない

あるクラスのフレンドクラスを継承しても、そのフレンドの機能は継承されない。

class CTest
{
    friend class CFriend;
private:
    int value;
};

class CFriend
{
protected:
    CTest test;
    void func()
    {
        int a = test.value;
    }
};

class Child : public CFriend
{
    void func()
    {
        int a = test.value; // コンパイルエラー
    }
};

今まであまりフレンドクラスを使う機会がなかったので、今日、コードを書いていて継承されないことを初めて知った。
確かに継承できてしまえば、まったくprivateにしている意味がない。
いや、そもそもフレンドクラスを使おうとしている時点で設計が間違っているだろう。フレンドクラスを使わなくて済むようにきちんと設計すべきだ。




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

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