아아, 이해하는데 시간 걸렸다. friend 함수를 사용하라는게 아니라 비멤버 비프렌드 함수를 이용하라는 뜻이다!
자, 왜 비멤버 비프렌드 함수와 가까워져야 할까?
우선 이 말은, 클래스 공개 내부 멤버함수를 조합하는 편의 함수에게만 적용된다.. 이 함수는 클래스 내부에 접근할수가 없고, 1. 무조건 클래스의 멤버 함수만을 이용해야 하며, 2. 멤버 함수를 이용하기 위해서는 매개체인 객체가 항상 필요하기 때문이다. 즉, 어디서 호출되는지 한눈에 파악할수 있으며, 수정 구역도 한정되기 때문이다.
이것으로 구체적인 장점은 무엇이 있을까?
첫째, 캡슐화를 더 강화 할수 있다
왜냐하면, private 멤버 데이터 접근 함수가 적어지기 때문이다.(많은 수의 private 접근 허용 함수가 있다면, 많은 수의 변경 가능성을 제공하는것, 이것이 바로 캡슐화를 약하게 만든다)
둘째, 컴파일 의존성 및 패키지 형태의 높은 유연성을 제공할수 있다.
특정 멤버 함수의 조합으로 원하는 편의 함수를 만들때, 어떻게 조합하느냐에 따라 어떤 편의 함수를 만들수가 있게 되고, 이런 이유로 파일 분활이 가능해 진다. 파일 분활이 가능해지면, 원하는 기능만 컴파일 할수 있으며, 패키지 형태로 나뉜 한정 구역에서만 수정 및 디버그를 할 수 있는 패키지 형태의 높은 유연성을 제공해 준다,
캡슐화의 진정한 의미를 파악했다면, 자연스럽게 이런 방식으로 넘어 갈 듯 이다.
관련링크
http://redinlife.egloos.com/1626634
http://www.terms.co.kr/encapsulation.htm
http://ikpil.tistory.com/308
자, 왜 비멤버 비프렌드 함수와 가까워져야 할까?
우선 이 말은, 클래스 공개 내부 멤버함수를 조합하는 편의 함수에게만 적용된다.. 이 함수는 클래스 내부에 접근할수가 없고, 1. 무조건 클래스의 멤버 함수만을 이용해야 하며, 2. 멤버 함수를 이용하기 위해서는 매개체인 객체가 항상 필요하기 때문이다. 즉, 어디서 호출되는지 한눈에 파악할수 있으며, 수정 구역도 한정되기 때문이다.
이것으로 구체적인 장점은 무엇이 있을까?
첫째, 캡슐화를 더 강화 할수 있다
왜냐하면, private 멤버 데이터 접근 함수가 적어지기 때문이다.(많은 수의 private 접근 허용 함수가 있다면, 많은 수의 변경 가능성을 제공하는것, 이것이 바로 캡슐화를 약하게 만든다)
둘째, 컴파일 의존성 및 패키지 형태의 높은 유연성을 제공할수 있다.
특정 멤버 함수의 조합으로 원하는 편의 함수를 만들때, 어떻게 조합하느냐에 따라 어떤 편의 함수를 만들수가 있게 되고, 이런 이유로 파일 분활이 가능해 진다. 파일 분활이 가능해지면, 원하는 기능만 컴파일 할수 있으며, 패키지 형태로 나뉜 한정 구역에서만 수정 및 디버그를 할 수 있는 패키지 형태의 높은 유연성을 제공해 준다,
캡슐화의 진정한 의미를 파악했다면, 자연스럽게 이런 방식으로 넘어 갈 듯 이다.
관련링크
http://redinlife.egloos.com/1626634
http://www.terms.co.kr/encapsulation.htm
http://ikpil.tistory.com/308
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 28: 내부에서 사용하는 객체에 대한 '핸들'을 반환하는 코드는 되도록 피하자. (0) | 2008.06.28 |
---|---|
항목 27: 캐스팅은 절약, 또 절약! 잊지 말자. (0) | 2008.06.26 |
항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자. (0) | 2008.06.25 |
항목 25: 예외를 던지지 않는 swap에 대한 지원도 생각해 보자 (0) | 2008.06.24 |
항목 24: 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멘버 함수를 선언하자 (0) | 2008.06.15 |
항목 22: 데이터 멤버가 선언될 곳은 private 영역임을 명심하자 (0) | 2008.06.07 |
항목 21: 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자. (0) | 2008.06.07 |
항목 20: '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달'방식을 택하는 편이 대개 낫다. (0) | 2008.06.06 |
항목 19: 클래스 설계는 타입 설계와 똑같이 취급하자. (0) | 2008.06.05 |
항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자. (0) | 2008.06.04 |
최근댓글