클래스에서 friend는 언제 쓰는 거죠?


friend선언을 알고는 있는데 한 번도 써본 적이 없고 어떤 경우에 써야 하는지를 모르겠습니다.

OOP의 캡슐화를 생각해보면 friend는 예외적인 기능이 아닌가요?

  • 2016년 01월 13일에 작성됨

조회수 229


1 답변


좋아요
0
싫어요
채택취소하기

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같이 복잡한 클래스들이 많은 경우를 생각해보면,

WindowManagerWindow는 상속관계는 아니지만 WindowManagerWindow의 public으로 접근해서는 안 될 function/data에 접근할 수 있어야 합니다. 이런 상황에서 friend는 유용하게 쓰입니다.

  • 2016년 01월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close