[1일 1블로그 무사고 5일] C++ friend에 대해서
friend 키워드
friend 키워드는 C++98 표준의 출시와 함께 처음 표준화되었음.
friend 키워드는 클래스 자체의 일부가 아닌 함수나 다른 클래스에 대한 클래스의 private 및 protected 멤버에 대한 액세스 권한을 부여하는데 사용됨
기본적으로 이는 외부 엔티티가 클래스의 private 및 protected 멤버에 대한 특별한 액세스 권한을 갖도록 허용함.
friend class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class A
{
int a = 5;
friend class B;
public:
void Print()
{
cout << a << '\n';
}
};
class B
{
int b = 3;
public:
void PrintA(A& cA)
{
cout << cA.a << '\n';
}
void Print()
{
cout << b << '\n';
}
};
int main()
{
A cA;
B cB;
cA.Print();
cB.Print();
cB.PrintA(cA);
return 0;
}
여기서 A는 B를 friend class B를 이용해 B가 A의 private 및 protected 변수에 접근할 수 있도록 지정했다.
반대로 A는 B의 멤버들을 접근하지는 못한다.
friend 함수
클래스에 friend 키워드로 특정 함수를 지정하면 그 함수에서 클래스의 private 및 protected에 접근할 수 있다. 다른 클래스의 멤버 함수도 지정이 가능하다.
주의할 점
클래스 A와 B가 친구이고 B와 C가 친구일 때 A와 C는 친구일까?? 아니다. friend 키워드로 명시하지 않는 이상 접근이 불가
친구의 자식도 마찬가지로 friend 키워드로 명시하지 않을 경우 접근이 불가
주로 쓰이는 곳
C++에서 클래스에 대해 연산자를 오버로딩할 때 주로 쓰인다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.