friend 클래스는 friend로 선언된 다른 클래스의 private 및 protected 멤버에 접근할 수 있다. 사용법은 friend 키워드를 사용하여 클래스나 함수를 명시 해 주는 것이다. 함수 같은 경우에는 전역함수랑 동일해진다, static 클래스 종속 함수랑은 별개.
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
class A
{
friend class B;
int mVal = 0;
protected:
void ProtectedFunc() { cout << "A class ProtectedFunc" << endl; }
friend void FriendFunc(A& a)
{
cout << "A class FriendFunc ";
a.mVal += 20;
a.PrintVal();
}
public:
int Get() const { return mVal; }
void Set(int Val)
{
cout << "A class Set mVal : ";
this->mVal = Val;
PrintVal();
}
void PrintVal() { cout << mVal << endl; }
};
class B
{
public:
void Run(A& a) { a.ProtectedFunc(); }
void Test(A& a)
{
a.mVal += 10;
cout << "B class Test ";
a.PrintVal();
}
};
int main()
{
A a;
B b;
b.Run(a);
FriendFunc(a);
a.Set(10);
b.Test(a);
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 클래스 상속 불가 및 함수 오버라이딩 불가 (final) (0) | 2022.07.21 |
---|---|
C++ 중첩 클래스 (Nested Class) (0) | 2022.07.20 |
C/C++ 연산자(Operator) 정리표 (비트, 논리, 산술 +=&^<<>>%~!) (0) | 2022.07.10 |
C++ POD, 표준 레이아웃 타입, 간단한 타입 (0) | 2022.07.08 |
C++ namespace와 using (0) | 2022.07.05 |