반응형
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
'개발 언어 > cpp' 카테고리의 다른 글
CPP 순수 가상 함수(Pure Virtual Function), 추상 클래스(Abstact Class), 인터페이스(Interface) (0) | 2022.01.18 |
---|---|
CPP 가상 함수(Virtual Function) (0) | 2022.01.18 |
CPP template (0) | 2022.01.17 |
CPP Container와 Iterator (0) | 2022.01.17 |
CPP struct class 기본 액세스 한정자 (0) | 2022.01.17 |
댓글