'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);
}