ホームに戻る
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