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

#include <iostream>
#include <string>
using namespace std; 
class Friend1 
{
private :
    string name;
    friend class Friend2; //여기서 friend class로 Friend2를 선언해주었음
}; 

class Friend2
{
public :
     void set_name(Friend1& f, string s) { //참조로 받은 Friend클래스 형식 f에 대하여
        f.name = s;    //private멤버인 name에 접근이 가능해짐
			}    
			void show_name(Friend1& f) {
        cout << f.name << "\\n";    
			}
	}; 
int main(void) 
{    
	Friend1 f1;    
	Friend2 f2;        
	f2.set_name(f1, "열코");    
	f2.show_name(f1);     
	return 0;
}
출처: <https://yeolco.tistory.com/116> [열코의 프로그래밍 일기:티스토리]

<aside> ❗ [1]친구의 친구는 명시하지 않은경우 친구관계가 형성되지 않음

</aside>

예를들어 위의 코드에서 Friend3 class를 생성하고 Friend2와 친구관계를 선언했다면

Friend1과는 아직 친구관계가 아닌 상태인 것

<aside> ❗ 친구의 자식도 직접적으로 명시하지 않은경우 친구관계가 성립하지 않음

</aside>

Friend2를 상속하는 Friend4 class를 만들었다면 Friend1과는 친과관계가 성립하지 않는 것