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과는 친과관계가 성립하지 않는 것