이것만은 잊지 말자!
- 멤버 함수 보다는 비멤버 비프렌드 함수를 자주 쓰자
- 캡슐화 정도가 높아지고 패키징 유연성도 커지며, 기능적인 확장성도 늘어남
비멤버 함수의 장점
- 캡슐화 : 외부에서 이 함수를 사용할 수 없음
- 비멤버 함수 대신에 유틸리티 클래스의 정적 함수로도 가능
- 해당 클래스의 멤버 함수가 아니면 됨 => 해당 클래스의 캡슐화에 영향을 주지 않아야 함
- 패키징 유연성 상승 => 컴파일 의존도 낮춤, 확장성 상승
해당 클래스의 같은 네임 스페이스에 비멤버 함수로 생성
- 편의를 위한 많은 함수가 있다면 분류하여 헤더 파일을 나누는 것도 좋음
- C++ 표준 라이브러리가 이 구조로 됨
- 사용하지 않는 코드를 고려하지 않아도 되어 컴파일 의존성을 줄임
- 편의 함수 집합의 확장이 쉬워짐
// WebBrowser.h // WebBrowser와 관련된 핵심 기능들
namespace WebBrowserStuff
{
class Webrowser { ... };
}
// WebBrowserBookMark.h
namespace WebBrowserStuff
{
// 즐겨찾기 관련 편의 함수들
}
// WebBrowserCookie.h
namespace WebBrowserStuff
{
// 쿠키 관련 편의 함수들
}
프렌드 함수 : 자신과 같은 클래스의 객체의 private 멤버 / 함수를 접근이 가능하게 하는 키워드
'C++ > Effective C++' 카테고리의 다른 글
Effective C++ 항목 25 예외를 던지지 않는 swap에 대한 지원도 생각해 보자 (3) | 2024.07.23 |
---|---|
Effective C++ 항목 24 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 (0) | 2024.07.22 |
Effective C++ 항목 22 데이터 멤버가 선언될 곳은 private 영역임을 명심하자 (0) | 2024.07.17 |
Effective C++ 항목 20 '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다 (0) | 2024.07.15 |
Effective C++ 항목 19 클래스 설계는 타입 설계와 똑같이 취급하자 (0) | 2024.07.11 |