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

조회수 9794회

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

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

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는 유용하게 쓰입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)