[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "
" 비멤버 비프렌드 함수가 멤버 함수보다 여러모로 낫다! "
- 멤버 함수보다는 캡슐화 정도가 높아지고 패키징 유연성도 커지며 기능적인 확장성도 늘어나는 비멤버 비프렌드 함수를 자주 쓰도록 하자!
[예시 코드]
class WebBrowser { public: void clearCache(); void clearHistory(); void removeCookies(); };
[멤버 함수 버전]
void clearEveryting() { clearCache(); clearHistory(); removeCookies(); }
[비멤버 함수 버전]
void clearBrowser(WebBrowser& wb) { wb.clearCache(); wb.clearHistory(); wb.removeCookies(); }
객체 지향 법칙은 할 수 있는 만큼 데이터를 캡슐화 하라고 함
- 멤버 함수 버전보다 비멤버 함수 버전이 캡슐화가 잘 되어 있음.
비멤버함수를 사용하면 패키징 유연성이 높아지고 컴파일 의존도도 낮출 수 있으며 확장성 또한 높일 수 있다.
캡슐화
- 비멤버 비프렌드 함수는 어떤 클래스의 private 멤버 부분을 접근할 수 있는 함수의 개수를 늘리지 않는다.
비멤버 비프렌드 함수에만 적용되는 이야기 이다.
'함수는 어떤 클래스의 비멤버가 되어야 한다'라는 주장이 '그 함수는 다른 클래스의 멤버가 될 수 없다' 라는 의미가 아니라는 것.
[예시 코드]
namespace WebBrowserStuff { class WebBrowser {...}; void clearBrowser(WebBrowser& wb); ... }
📕 namespace를 활용해서 여러 파일에서 필요한 부분들도 함수를 쪼개 쓰면 된다!