It won't hurt to try
[C++/윈도우프로그래밍응용]17. 프렌드 함수와 프렌드 클래스 본문
프렌드(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
'C++ > 윈도우프로그래밍응용' 카테고리의 다른 글
[C++/윈도우프로그래밍응용]19. 상속과 접근지정자 (0) | 2021.10.24 |
---|---|
[C++/윈도우프로그래밍응용]18. 상속 (0) | 2021.10.24 |
[C++/윈도우프로그래밍응용]16. 연산자 중복 (0) | 2021.10.09 |
[C++/윈도우프로그래밍응용]15. 복사 생성자와 정적 변수 (0) | 2021.10.09 |
[C++/윈도우프로그래밍응용]14. 포인터의 특수한 용법 (0) | 2021.10.03 |
Comments