friend
선언대상에게 정보를 공유해 주는 키워드
사용할 경우 캡슐화가 깨질 수 있어 주의해야 한다.
friend 클래스

위와 같이 클래스 앞에 friend를 붙여주면 된다.
class 키워드를 빼도 동일하게 작동한다.
접근 허용


friend 클래스에게 나의 protected, private 접근을 허용한다.
friend 클래스가 아닐 경우


protected, private에 접근할 수 없다.
순서의 중요성


Apple이라는 클래스가 만들어질 때
Orange라는 클래스의 정보가 없어 문제가 생기게 된다.
일방적인 friend


friend를 통해 접근권한을 허용했지만
상호적으로 허용되는 것은 아니다.
상호참조


서로가 서로를 필요로 하게 되어서 생성이 불가능하게 된다.
(닭이 먼저인가, 달걀이 먼저인가)
전방선언



전방선언과 포인터를 이용해 사용할 수도 있다.
상속


상위 클래스의 friend의 영향을 받는 클래스는
상위클래스의 protected, private 접근가능하다


상속받은 클래스는 상위 friend의 효력이 사라진다
하위 클래스의 protected, private 접근이 불가능하다
연계


A가 B에게 접근을 허용하고
B가 C에게 접근을 허용해도
C가 A에 접근허용되는 것은 아니다.


모두에게 권한을 줘야 작동하게 된다.
friend 함수


friend 키워드를 통해 함수밖에서
protected, private에 접근이 허용된다.


friend 키워드를 지울 경우 접근이 제한된다.
'C++' 카테고리의 다른 글
| [C++] virtual (0) | 2023.05.23 |
|---|---|
| [C++] constexpr (0) | 2023.05.16 |
| [C++] 참조자 (0) | 2023.05.15 |
| [C++] const (0) | 2023.05.13 |
| [C++] 복사대입연산자 (0) | 2023.05.12 |