C++ friend 예약어

tktj12·2023년 7월 2일
0

class의 외부에서 private에 접근할 수 있게 해주는 장치


  C++에서 class의 private 영역은 class 내부에 선언된 함수들만 접근이 가능하다.
  그런데 friend 키워드는 외부의 함수, 혹은 다른 class가 private에 접근할 수 있게 해준다.

class MyClass {
private:
	int property = 0;
public:
	MyClass() {}
	void set(int n) { property = n; }
	int get() { return property; }

	friend void FriendFunction(MyClass&, int);
	friend class FriendClass;
};

class FriendClass {
public:
	void ChangeProperty(MyClass& mc, int n) {
		mc.property = n;
	}
};

void FriendFunction(MyClass& mc, int n) {
	mc.property = n;
}

int main()
{
	MyClass mc;
	mc.set(1);
	cout << mc.get() << ' ';

	FriendClass fc;
	fc.ChangeProperty(mc, 2);
	cout << mc.get() << ' ';

	FriendFunction(mc, 3);
	cout << mc.get();
	
	return 0;
}

출력 : 1 2 3

private은 private인 이유가 있을 것이다. 특별한 상황에만 friend 키워드를 사용해야 한다.

profile
C++, 알고리즘 공부

0개의 댓글