정보 은폐는 신뢰성을 높이지만, 사용을 불편하게 한다.
그래서 예외를 만들기 위해 friend 를 사용한다.
1. 프렌드 함수
void func(); class Some { friend void func(); .... }; void func() { // class Some의 모든 멤버를 사용할 수 있다. } |
필요에 따라 클래스를 통째로 프렌드로 지정할 수 있다.
2. 프렌드 클래스
class Your; class My { friend class Your; .... }; class Your { // Class My의 모든 멤버를 사용할 수 있다. }; |
- 프렌드는 자신을 사용하도록 허락함을 뜻한다.
- 프렌드 지정은 단방향이므로 A가 B를 프렌드 선언 하면 B는 A를 사용하지만, A는 그렇지 못한다.
- A가 B를, B가 C를 프렌드 선언해도 C는 A를 사용하지 못한다. (A와 B가, B와 C가 친구라고 해서 꼭 A와 C가 친구는 아니다.)
- A가 B를 프렌드 선언해도, B의 자식 C는 A를 사용하지 못한다. (A와 B가 친구여도, A가 B의 자식과 친구는 안된다.)
반응형
'Programming > C/C++' 카테고리의 다른 글
[C++] string (0) | 2013.04.05 |
---|---|
Template Class 만들 때 주의할 점 (0) | 2013.01.28 |
CallBack 함수 (1) | 2012.06.10 |