friend는 친구라는 뜻이다.
근데 클래스의 friend 선언은 무슨 소리일까?
A라는 클래스와
B라는 클래스가 있다고 가정하자.
근데 A 클래스가
" B 클래스는 제 친구예요. 믿을만합니다.. ㅎㅎ"라고 말했습니다(선언했습니다).
그럼 B클래스는 A클래스의 private에 접근 가능하게 된다.
즉, B클래스 내에 있는 A형 객체는 private 접근 가능하게 된다.
그럼 직접 코드로 보자.
클래스 A 내에 friend class B;으로 B가 자신의 친구임을 선언했다. (friend 선언은 클래스 내에 어디든 위치할 수 있다.)
그래서 클래스 B는 A의 private한 num을 호출할 수 있다.
( B도 클래스 A를 친구라고 선언해두면 반대로 A가 B의 private 접근도 가능하다! )
또한 클래스 단위가 아닌 클래스내의 함수 단위로도 friend 선언을 할 수 있다.
이렇게 ShowAclass는 A 클래스의 friend로 선언되었기 때문에 private에 접근 가능하다.
하지만 friend 선언은 정보은닉을 무너뜨리는 문법이기도 하기 때문에 가급적 사용하지 말자.
'스터디 > C++' 카테고리의 다른 글
[ C++ ] 컨트롤(Control)클래스 / 핸들러(Handler) 클래스 (0) | 2019.09.26 |
---|---|
[ C++ ] static 멤버변수( 클래스 변수 )와 static 멤버함수, mutable (0) | 2019.09.26 |
[ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy ) (0) | 2019.09.26 |
[ C++ ] 복사 생성자( Copy Constructor )와 explicit (1) | 2019.09.24 |
[ C++ ] 생성자와 소멸자 그리고 멤버 이니셜라이저( Member Initializer ) (1) | 2019.09.24 |