exact target

friend 권한은 선언한 대상에만 열린다

operator<<가 내부 값을 읽을 수 있어도 그 권한은 다른 함수, 상속 계층, 반대 방향으로 퍼지지 않습니다.

허용operator<<(ostream&, const Point&)선언된 이 함수 하나만 Point::x, Point::y에 접근합니다.
차단다른 함수와 다른 클래스이름이 선언되지 않았다면 같은 파일에 있어도 private 경계 밖입니다.
class Point {   int x, y;   friend std::ostream& operator<<(std::ostream&, const Point&); };
not transitiveA가 B의 friend여도 B의 friend가 A의 friend가 되지 않습니다.
not inherited기반 클래스 friend 권한이 파생 클래스 private까지 확장되지 않습니다.
not symmetricA가 B를 열어 주어도 B가 A를 자동으로 열어 주지는 않습니다.
출력 연산자는 보통 const Base&처럼 참조로 받아 슬라이싱을 피하고, 파생 타입별 출력은 별도의 가상 출력 함수로 설계합니다.