private 영역에 넣었다면?
private는 클래스 외부에서의 그 어떤 접근도 허용하지 않겠다는 인터페이스이다. 항상 클래스 내부에서만 접근 가능하다. 이 때문에 많은 장점 있겠지만, 대표적으로 엉터리로 쓰기엔 어렵게 만들기 위해서이고, 캡슐화를 위해서이다.
엉터리로 쓰기엔... 이부분은 항목 18에 설명을 했고, 캡술화란 무엇인지는 지겹게 들었을 것이다. 캡슐화 부분만 다시 지적한다면, 객체 내부에 private 영역에 데이터를 넣음으로써 객체간의 혼동과 디버그, 보안 인터페이스를 보다 쉽게 막거나나 혹은 더 쉽게 가능해 지기 때문이다.
이처럼 캡슐화를 하게 되면, 모든 데이터를 함수 인터페이스 뒤에 감추게 되는데, 이때 구현상의 융통성을 전부 누릴 수 도 있다. 예를 들자면, .. 내부 데이터 접근시 카운팅을 하거나, 다른 객체에 메세지를 전달하거나, .. 가공을 해서 끄낸다거나 등등등 장점이 있다.
무엇인가 설명이 부족한데?
정확하다, 우선 멤버 데이터를 public으로 넣고, 클래스 외부에서 정말 많은 곳에서 그 멤버 데이터를 썻다고 가정하고, 클래스 수정이라는 불가피한 사정으로 그 멤버 데이터를 지워야 한다고 치자. 그러면 .. 클래스 외부에는 정말 많은곳을 다 수정해야 하고, 테스트도 해야 한다! 물론 private에 넣어도 똑같겠지만 그 작업량은 현격하게 줄어 든다. 이게 가장 중요하다! 이 뜻은 .. 위에 설명한 밑줄을 풀이 한것이다.
이것만은 잊지 말자!
1. 멤버 데이터는 private 에 넣자!
2. public 과 protected 는 도토리 키재기 인터 페이스이다!
관련 링크
http://redinlife.egloos.com/1625285
http://kldp.org/node/93763
http://kldp.org/node/89756
http://ikpil.tistory.com/310
http://www.ac-plus.net/bbs/board.php?bo_table=acProgram_Cpp&wr_id=3439
http://nlp.kookmin.ac.kr/~sskang/lect/cpp/ppp.htm
private는 클래스 외부에서의 그 어떤 접근도 허용하지 않겠다는 인터페이스이다. 항상 클래스 내부에서만 접근 가능하다. 이 때문에 많은 장점 있겠지만, 대표적으로 엉터리로 쓰기엔 어렵게 만들기 위해서이고, 캡슐화를 위해서이다.
엉터리로 쓰기엔... 이부분은 항목 18에 설명을 했고, 캡술화란 무엇인지는 지겹게 들었을 것이다. 캡슐화 부분만 다시 지적한다면, 객체 내부에 private 영역에 데이터를 넣음으로써 객체간의 혼동과 디버그, 보안 인터페이스를 보다 쉽게 막거나나 혹은 더 쉽게 가능해 지기 때문이다.
이처럼 캡슐화를 하게 되면, 모든 데이터를 함수 인터페이스 뒤에 감추게 되는데, 이때 구현상의 융통성을 전부 누릴 수 도 있다. 예를 들자면, .. 내부 데이터 접근시 카운팅을 하거나, 다른 객체에 메세지를 전달하거나, .. 가공을 해서 끄낸다거나 등등등 장점이 있다.
무엇인가 설명이 부족한데?
정확하다, 우선 멤버 데이터를 public으로 넣고, 클래스 외부에서 정말 많은 곳에서 그 멤버 데이터를 썻다고 가정하고, 클래스 수정이라는 불가피한 사정으로 그 멤버 데이터를 지워야 한다고 치자. 그러면 .. 클래스 외부에는 정말 많은곳을 다 수정해야 하고, 테스트도 해야 한다! 물론 private에 넣어도 똑같겠지만 그 작업량은 현격하게 줄어 든다. 이게 가장 중요하다! 이 뜻은 .. 위에 설명한 밑줄을 풀이 한것이다.
이것만은 잊지 말자!
1. 멤버 데이터는 private 에 넣자!
2. public 과 protected 는 도토리 키재기 인터 페이스이다!
관련 링크
http://redinlife.egloos.com/1625285
http://kldp.org/node/93763
http://kldp.org/node/89756
http://ikpil.tistory.com/310
http://www.ac-plus.net/bbs/board.php?bo_table=acProgram_Cpp&wr_id=3439
http://nlp.kookmin.ac.kr/~sskang/lect/cpp/ppp.htm
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 27: 캐스팅은 절약, 또 절약! 잊지 말자. (0) | 2008.06.26 |
---|---|
항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자. (0) | 2008.06.25 |
항목 25: 예외를 던지지 않는 swap에 대한 지원도 생각해 보자 (0) | 2008.06.24 |
항목 24: 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멘버 함수를 선언하자 (0) | 2008.06.15 |
항목 23: 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자. (0) | 2008.06.07 |
항목 21: 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자. (0) | 2008.06.07 |
항목 20: '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달'방식을 택하는 편이 대개 낫다. (0) | 2008.06.06 |
항목 19: 클래스 설계는 타입 설계와 똑같이 취급하자. (0) | 2008.06.05 |
항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자. (0) | 2008.06.04 |
항목 17: new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자 (0) | 2008.06.03 |
최근댓글