-
[C++] friendC++ 2023. 4. 11. 20:58
내 클래스 멤버는 아니지만
내 클래스 멤버와 동일한 권한을 가졌다고 인정하는 것

friend keyword는 함수와 클래스 앞에 붙는다!
[friend 함수]
일단 friend 가 붙으면 해당 클래스꺼는 절대 아님
외부에 선언된 함수인데 (전역함수 or 타 클래스 함수)
friend 라고 선언된 클래스에서 friend라고 인정한 것임
friend 함수는 선언된 클래스의 모든 멤버에 접근할 수 있는 권한이 부여된다
즉, private까지 접근할 수 있다
[friend 선언 3종류]
1. 전역함수
bool equals(Rect r, Rect s) { // code } class Rect { // code friend bool equals(Rect r, Rect s); };전역함수는 소속 클래스가 없으므로 범위지정연산자가 당연히 필요없다
2. 타 클래스의 멤버함수
class Rect{ // code friend bool RectManager::equals(Rect r,Rect s); }RectManager라는 타 클래스의 멤버함수 equals 를 Rect 클래스에 friend로 선언한 것
이때는 타 클래스의 멤버함수이므로 범위지정연산자로 명시해줘야한다
3. 타 클래스 멤버함수 전체 (클래스에 friend 붙이기)
class Rect { // code friend RectManager; };클래스 앞에 friend를 붙이는건
해당 클래스의 모든 멤버함수를 friend로 인정해준다는 것
이렇게 되면 RectManager에 있는 모든 함수가 Rect 클래스의 모든 멤버에 접근 가능
'C++' 카테고리의 다른 글
[C++] const (1) 2023.04.12 [C++] 접근지정자 (access modifiers) (3) 2023.04.11 [C++] static (0) 2023.04.06 [C++] inline function (0) 2023.04.03 [C++] 소멸자 (0) 2023.03.25