friend 클래스는 friend로 선언된 다른 클래스의 private 및 protected 멤버에 접근할 수 있음

특정 상황에서 클래스 내에 접근하지 못하도록 private 제한을 두었는데, 필요의 경우 해당 클래스나 함수에서 접근 가능하도록 사용하는 것이 friend 클래스 및 함수.

코드 예시

#include <iostream>
using namespace std;

class People{
private:
    string name;
public:
    People(string name) {this->name = name;} //생성자
    
    friend void sayName(People p); //friend함수
};

void sayName(People p) {
    //friend 함수이므로
    //접근 제어 지시자의 영향을 받지않고 
    //private 멤버에 직접 접근이 가능
    cout << p.name << endl;
}

void main() {
    People p("박예진");
    sayName(p);
}