본문 바로가기
스터디/C++

[ C++ ] 클래스의 friend 선언, 함수의 friend 선언

by 알 수 없는 사용자 2019. 9. 26.

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 선언은 정보은닉을 무너뜨리는 문법이기도 하기 때문에 가급적 사용하지 말자.