책 정리/Effective C++ 3rd
항목 22. 데이터 멤버가 선언될 곳은 private 영역임을 명심하자
ocean20
2020. 1. 9. 10:27
1. 데이터멤버를 private으로 선언해야 하는이유
(1) 문법적 일관성 : 함수로만 데이터 멤버 접근시, 괄호를 쓸지 말지 고민할 필요가없다.
(2) 세밀한 접근 제어 : 접근 권한을 세밀하게 컨트롤 가능하다.
(3) 캡슐화 : 데이터 멤버를 캡슐화하면 구현상의 융통성을 전부 누릴 수 있다. ex. 내부 데이터 접근시 카운팅, 다른객체에 메시지 전달, 알람 팝업 등..
2. public과 protected
(1) public : 캡슐화 되지 않았다 = 바꿀수 없다.
- 만약 데이터멤버를 public으로 선언해놓고 여러 외부 클래스에서 이 데이터를 사용중이다. 만약 이 데이터를 삭제할 일이생긴다면 ?... 고칠 것이 너무 많을 것이다.
(2) protected : 마찬가지로 데이터를 삭제할 일이 생겼다.. 해당 클래스를 상속받는 클래스를 전부다 수정해주어야 할 것이다.
요약정리
(1) 데이터 멤버는 private 멤버로 선언하자.
1) 일관성있는 데이터 접근통로(멤버함수로)
2) 세밀한 접근 제어
3) 내부 구현의 융통성
(2) protected는 public보다 더 많이 '보호' 받는 것이 아니다..