개발 언어/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