friend 선언

sz L·2023년 3월 28일
1

C++

목록 보기
21/40
post-thumbnail

클래스의 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;
}    
profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글