ためになるホームページ お問い合わせ




TOP > C++ > 
フレンド関数
クラスの保護メンバー変数に、アクセスできる関数のこと。通常、privateメンバ変数はクラス内からアクセスできないが、フレンド関数はそのprivateな変数にアクセスできる。
フレンド関数はクラス内でのみ宣言できる。また、フレンド関数を使用する時はクラスのメンバではない事に注意が必要。(オブジェクト名で修飾する必要なし)
friend 戻り値 関数名(パラメータ);//宣言
戻り値 関数名(パラメータ){...}//実装
※実装では、friendキーワードも所有を表すスコープ演算子も不要

フレンド関数のメリットは、
  • 演算子のオーバーロード
  • ある種の入出力関数の作成に関するもの
  • 2つ以上の別々クラスのprivateメンバにアクセスする時
  • が挙げられる

    フレンド関数の例
    #include <iostream>
    using namespace std;
    
    class Parent
    {
      int privateA;
    public:
      Parent(int val) : privateA(val)
      {}
      void acceessVal()
      {
        cout << "privateA = " << privateA << endl;
      }
      //フレンド関数
      friend void friend_func(Parent *p)
      {
        cout << "friend func in privateA = " << p->privateA << endl;
      }
    };
    
    
    int main(int argc, char** argv)
    {
      Parent i_parent(3);
      i_parent.acceessVal();
      friend_func(&i_parent);//フレンド関数(フレンド関数内では、privateメンバにアクセスできる)
      return(0);
    }
    
    


    
    






    Copyright 2007 ためになるホームページ All Rights Reserved.