friend

Programming/C++ 2012. 5. 26. 01:16 |

- 클래스와 함수에 대한 friend 선언 - 


클래스의 friend 선언


* A 클래스가 B 클래스를 대상으로 friend 선언을 하면, B 클래스는 A 클래스의 private 멤버에 직접 접근이 가능하다.

* 단, A 클래스도 B 클래스의 private 멤버에 직접 접근이 가능하려면, B 클래스가 A 클래스를 대상으로 friend 선언을 해줘야 한다.





friend 선언은 언제 선언해야 할까?


: c++ 문법 중에서 논란이 되었던 것 중 하나가 바로 이 friend 선언이다. friend 선언은 객체지향의 대명사 중 하나인 '정보은닉' 을 무너뜨리는 문법이기 때문이다.


※ friend 선언은 지나치면 아주 위험할 수 있습니다. friend 선언은 필요한 상황에서 극히 소극적으로 사용해야 합니다. - 열혈강의 C++


◇ friend 선언이 좋은 약으로 사용되는 상황은, 연산자 오버로딩을 공부하면서이다.






함수의 friend 선언


: 전역함수를 대상으로도, 클래스의 멤버함수를 대상으로도 friend 선언이 가능하다. 물론 friend 선언된 함수는 자신이 선언된 클래스의 private 영역에 접근이 가능하다.




friend void ShowPointPos(const Point&);

이 선언에는 friend 선언 이외에, 다음의 함수원형 선언이 포함되어 있다.


void ShowPointPos(const Point&);

따라서 friend 선언을 위해서 별도의 함수원형을 선언할 필요는 없다.

'Programming > C++' 카테고리의 다른 글

상속(inheritance)  (0) 2012.06.06
C++에서의 static  (0) 2012.05.30
const 객체와 const 객체의 특성 그리고 const 함수 오버로딩  (0) 2012.05.26
복사 생성자의 호출시점  (0) 2012.05.25
깊은 복사 & 얕은 복사  (0) 2012.05.24
Posted by scii
: