'friend' 예약어는 함수나 클래스 선언 앞에 작성할 수 있습니다. 'friend'로 선언한 함수나 클래스는 접근 제어 지시자의 영향을 받지 않습니다. 그리고 반드시 클래스 내부에서 friend 선언을 해야 합니다.

class MyData {
private:
int m_nData = 0;
public:
MyData(int nParam) : m_nData{ nParam } { /* do somthing */ }
int GetData() const { return m_nData; }
void SetData(int nParam) { m_nData = nParam; }
friend void PrintData(const MyData&); // PrintData() 함수는 이제 MyData 클래스의 친구입니다.
};
void PrintData(const MyData& rhs) {
// private 접근 제어에 있는 m_nData 변수에 직접 접근합니다.
cout << rhs.m_nData << endl;
}
void main() {
MyData a{ 10 };
PrintData(a);
}

 

댓글

댓글을 사용할 수 없습니다.