friend는 private 경계에 여는 좁은 문이다
외부 코드 전체를 믿는 문법이 아니라, 선언한 함수나 클래스 하나에만 내부 접근권을 부여합니다.
class Box공개 API는 불변식을 지키는 정문입니다.
private
width, height는 외부에서 직접 읽지 못합니다.friend 선언
friend int area(const Box&);문은 작게 열고 대상은 이름으로 고정합니다.허용 대상
area(box)멤버 함수가 아니지만 지정된 계산에 필요한 내부 값만 읽습니다.공개 API로 충분한가?가능하면 friend보다 의미 있는 관찰자 함수가 먼저입니다.
좌측 피연산자가 외부인가?
std::cout << p처럼 멤버 함수로 만들기 어려운 경우를 확인합니다.권한을 줄일 수 있는가?
friend class보다 특정 함수 하나가 더 안전합니다.핵심 기준: friend는 캡슐화를 포기하는 문법이 아니라, 예외 접근권을 문서화해 좁게 여는 문법입니다.