It won't hurt to try

[C++/윈도우프로그래밍응용]17. 프렌드 함수와 프렌드 클래스 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]17. 프렌드 함수와 프렌드 클래스

yongki.doki 2021. 10. 9. 15:35

프렌드(friend)

  • 클래스 자신의 내부 데이터를 사용하도록 하는 메커니즘
    외부의 클래스나 함수가 자신의 내부 데이터를 사용하도록 예외적으로 허용하여 주는 방법
  • friend 키워드를 이용하여 지정

프렌드 함수는 클래스 내부의 모든 멤버 변수 사용 가능

  • 접속 지정자의 영향 받지 않음
  • 모든 멤버 변수에 대한 읽기 및 쓰기 가능

프렌드 함수는 클래스 내부의 모든 멤버 함수 호출 가능

  • 모든 멤버 함수에 대한 접근 가능

쉽게 생각해서, friend가 지정된 함수나 클래스에서 해당 클래스에 접근이 자유로워진다.

#ifndef FRIEND_H
#define FRIEND_H


class Friend
{
    int month, day;
public:
    Friend(int m=0, int d=0);
    friend bool equals(Friend obj1, Friend obj2);
};

bool equals(Friend obj1, Friend obj2){
    return obj1.month == obj2.month && obj1.day == obj2.day;
}

#endif // FRIEND_H

friend가 지정된 equals함수에서는 Friend 객체에 자유롭게 접근한다.

obj1.month만 보더라도 멤버변수에 자유롭게 접근하는 것을 볼수있다.

 

대신 객체지향프로그래밍의 원칙은 캡슐화에 어긋나므로, 진짜 필요한 경우에만 사용하도록 한다.

 

 

300x250
300x250
Comments