public API 또는 const getter
int width() const
읽기 전용 값, 명확한 행위, 불변 조건을 공개 함수 이름으로 표현할 수 있을 때 적합하다.
같은 private 데이터 접근이라도 단순 조회, 외부 연산자, 밀접한 협력 객체는 선택지가 다르다. 권한 범위가 좁은 쪽부터 검토하면 결합도를 낮출 수 있다.
int width() const
읽기 전용 값, 명확한 행위, 불변 조건을 공개 함수 이름으로 표현할 수 있을 때 적합하다.
operator<<(os, p)
함수 하나만 내부 상태를 읽어야 하고, 멤버 함수 형태가 자연스럽지 않은 계산이나 출력 연산자에 맞다.
friend class Inspector
클래스 전체에 접근 권한을 주므로 편하지만 넓다. 내부 표현과 강하게 묶인 협력자일 때만 사용한다.
public API로 의도를 표현할 수 있으면 그쪽이 기본값이다. 꼭 private 접근이 필요하다면 friend class보다 friend function처럼 작은 권한을 먼저 선택한다.