멤버를 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 |