ホームに戻る
 friendクラスとfriend関数

#include <iostream>

/*
*
*   friendクラスとfriend関数
*
*   privateなメンバ変数にクラスや関数がアクセスする仕組み。
*   privateなメンバに例外的にアクセスするので、
*   合理的な使用が求められ、乱用を避けるべきである。
*
*/

class A{
private:
  static int num;
public:
  friend void f(A &a);
  friend class B;
};

int A::num = 7;

class B : public A{
public:
  void f();
};

void B::f(){
  std::cout << num << std::endl;  // priveteなメンバ変数にアクセス
}

using namespace std;

void f(A &a){  // クラスのメンバ関数で無いことに注意
  cout << A::num << endl;  // priveteなメンバ変数にアクセス
  cout << a.num << endl;  // priveteなメンバ変数にアクセス
}

int main(){
  A a;
  B b;

  f(a);
  b.f();

  return 0;
}

 結果

7
7
7

inserted by FC2 system