class의 외부에서 private에 접근할 수 있게 해주는 장치
C++에서 class의 private 영역은 class 내부에 선언된 함수들만 접근이 가능하다.
그런데 friend
키워드는 외부의 함수, 혹은 다른 class가 private에 접근할 수 있게 해준다.
class MyClass {
private:
int property = 0;
public:
MyClass() {}
void set(int n) { property = n; }
int get() { return property; }
friend void FriendFunction(MyClass&, int);
friend class FriendClass;
};
class FriendClass {
public:
void ChangeProperty(MyClass& mc, int n) {
mc.property = n;
}
};
void FriendFunction(MyClass& mc, int n) {
mc.property = n;
}
int main()
{
MyClass mc;
mc.set(1);
cout << mc.get() << ' ';
FriendClass fc;
fc.ChangeProperty(mc, 2);
cout << mc.get() << ' ';
FriendFunction(mc, 3);
cout << mc.get();
return 0;
}
출력 : 1 2 3
friend
키워드를 사용해야 한다.