클래스에서 friend는 언제 쓰는 거죠?
oop
c++
encapsulation
friend
friend
선언을 알고는 있는데
한 번도 써본 적이 없고
어떤 경우에 써야 하는지를 모르겠습니다.
OOP의 캡슐화를 생각해보면
friend
는 예외적인 기능이 아닌가요?
-
2016년 01월 13일에 작성됨
조회수 1879
1 답변
friend
를 명시하면 해당 클래스가 protect data/function
에 접근하는 것이 가능해집니다.
밑의 코드에서는 아무나 Child
클래스의 name
에 접근할 수 있지만
오직 Mother
클래스만이 Child
클래스의 name
을 바꿀 수 있습니다.
class Child
{
friend class Mother;
public:
string name( void ); //모두가 접근 가능
protected:
void setName( string newName ); //Mother가 접근 가능
};
이렇게 간단한 예제에선 잘 와 닿지 않지만 Window같이 복잡한 클래스들이 많은 경우를 생각해보면,
WindowManager
와 Window
는 상속관계는 아니지만
WindowManager
는 Window
의 public으로 접근해서는 안 될 function/data에 접근할 수 있어야 합니다.
이런 상황에서 friend
는 유용하게 쓰입니다.
-
2016년 01월 13일에 작성됨
출처 : https://stackoverflow.com/questions/17434/when-should-you-use-friend-in-c 이 질문은 저작자표시-동일조건변경허락(https://creativecommons.org/licenses/by-sa/3.0/deed.ko) 라이센스로 이용할 수 있습니다. 윤동길 2018.3.21 15:34