클래스의 friend 선언
- A클래스가 B클래스를 대상으로 friend 선언을 하면, B클래스는 A클래스의 private 멤버에 직접 접근이 가능하다
- friend 선언은 클래스 내 아무곳에서나 선언
- friend 선언은 정보은닉을 무너뜨리는 문법이기도 하기 때문에 가급적 사용하지 말자
- friend 선언은 연산자 오버로딩 할 때 사용한다
#include <iostream>
#include <cstring>
using namespace std;
#pragma warning(disable:4996)
class Girl;
class Boy
{
private:
int height;
friend class Girl;
public:
Boy(int len) : height(len)
{ }
void ShowYourFriendInfo(Girl& frn);
};
class Girl
{
private:
char phNum[20];
public:
Girl(const char* num)
{
strcpy(phNum, num);
}
void ShowYourFriendInfo(Boy& frn);
friend class Boy;
};
void Boy::ShowYourFriendInfo(Girl& frn)
{
cout << "Her phone number: " << frn.phNum << endl;
}
void Girl::ShowYourFriendInfo(Boy& frn)
{
cout << "His height: " << frn.height << endl;
}
int main()
{
Boy boy(170);
Girl girl("010-1234-5678");
boy.ShowYourFriendInfo(girl);
girl.ShowYourFriendInfo(boy);
return 0;
}
- Girl class에서 Boy class 접근 허용
class Boy
{
private:
...
friend class Girl;
...
}
- Boy class에서 Girl class 접근 허용
class Girl
{
...
public:
...
friend class Boy;
}