C++언어 공부/개념 공부
2024.02.01 C++ 언어 공부 7일 차 (프렌드)
코딩입문시작
2024. 2. 2. 11:35
프렌드 (friend)
- 정보를 은폐하면 객체의 신뢰성이 높아지고 기능 개선도 용이한 것은 분명하다. 하지만 불편한 점도 있다. C++의 액세스 지정자는 매우 엄격하기 때문에, 정상적인 문법으로는 외부에서 멤버를 참조할 수 없다. 하지만, 어떤 경우에는 이런 정보 은폐 기능이 방해가 될 수도 있기 때문에 예외적으로 지정한 대상에 대해서는 모든 멤버를 공개할 수 있는데, 이를 프렌드 지정이라고 한다.
프렌트의 특징 (프렌드 클래스 관한 특징)
- 프렌드 지정은 단방향이며 명시적으로 지정한 대상만 프렌드가 된다.
클래스 A | 클래스 B |
friend class B; |
클래스B는 클래스A에 엑세스가 가능하다.
B는 A의 모든 멤버를 엑세스할 수 있다. A는 그렇지 않다.
자유롭게 사용하고 싶다면 양쪽 모두에 friend를 지정해주어야 한다.
- 프렌드 지정은 전이되지 않으며 친구의 친구 관계는 인정하지 않는다.
클래스 A | 클래스 B | 클래스 C |
friend class B; | friend class C; |
클래스B는 클래스A에 엑세스가 가능하다. 클래스C는 클래스B에 엑세스가 가능하다.
그러나 클래스C는 클래스A에 엑세스가 불가능하다.
※ friend class B, C; ← 이 문법은 허용하지 않는다. friend 지정시, 다 따로 지정을 해주어야 한다.
- 프렌드 관계는 상속되지 않는다.