개발 언어/cpp

CPP friend 클래스와 함수

eeeun:) 2022. 1. 18. 10:32
반응형

friend 클래스란?

다른 클래스의 private 및 protected 멤버에 접근할 수 있게 해주는 키워드!

friend class A;

클래스 내에서 friend로 다른 클래스를 등록해놓으면,

private와 proteced로 접근하지 못하게 만든 변수 또는 함수에 접근 가능!

 

아래 예제 코드를 보자

class A {
private:
	int num;
friend class B;
};

class B {
	void set_A_num(A &a, int n) {
    	a.num = n;
    }
};

클래스 B의 set_A_num함수에서 A의 클래스의 num에 직접 접근해서 값을 변경했다.

원래 A 클래스의 num은 private이라 다른 클래스에서 직접 접근하지 못한다.

 

그러나 A클래스에서 friend 키워드를 통해 B 클래스를 친구로 등록해줘서

B 클래스에서도 A의 private와 protected의 변수 함수를 맘껏 사용 가능해졌다!

 

friend 함수란?

friend 클래스와 마찬가지로 private 및 protected 멤버에 접근할 수 있는 권한을 부여!

클래스 단위가 아닌 함수 단위로 지정

 

아래 코드를 보자.

class A {
private:
	int num;
friend void set_A_num(A &a, int n);
};

void set_A_num(A &a, int n) {
    	a.num = n;
};

friend class를 지정할 때랑 방식은 똑같다.

class를 넣었던 부분에 함수를 넣어주면 된다.

 

set_A_num 함수에서 A 클래스의 private num 변수에 접근 가능해졌다!

728x90