본문 바로가기

컴퓨터 과학 & 영상처리 관련/C / C++

friend

멤버를 private로 하면 다른 클래스에서 접근할 수 없다. 그러나 때때로 다른 클래스에서 살짝 접근해야 될 때도 있다.


class Info{

friend class OtherInfo;    //otherinfo 클래스를 info클래스의 프렌드 클래스로 선언

private:

     int hidden_info;

};


이렇게 하면, OtherInfo 클래스에서 Info클래스의 private 멤버에 액세스 가능


class OtherInfo{

public:

   void Access(Info anyInfo){

        anyInfo.hidden_info = 1;    //Info 클래스의 private 멤버에 엑세스 할 수 있다.

   )

};



프렌드 클래스 선언은 클래스의 정의 안 어디에서나 기술해도 상관없다. 

위의 예에서 OtherInfo클래스는 info 클래스의 프렌드 클래스지만 그 반대는 아니다.

또한 다음과 같이 특정 함수만을 프렌드 함수로 지정할 수도 있습니다.


class Info{ 

     friend void GlobalAccess(Info anyInfo);     //클래스 외의 보통함수도 프렌드 설정함


당연히 프로그램 수정이 복잡하므로 잘 생각해서 신중하게 해야됨


'컴퓨터 과학 & 영상처리 관련 > C / C++' 카테고리의 다른 글

가상 함수와 오버라이딩  (0) 2012.07.10
상속(inheritance)  (0) 2012.07.10
복사생성자  (0) 2012.07.10
new/delete 연산자의 응용  (0) 2012.07.10
실인수와 가인수, 별명;참조(&)  (0) 2012.07.10