-
Effective C++...37일지 2022. 8. 8. 07:47
private 상속은 심사숙고해서 구사하자
private 상속의 의미
private 상속은 is-implemented-in-terms-of를 의미하며 컴파일러는 상속 관계가 private이면 파생 클래스 객체를 기본 클래스 객체로 변환하지 않는다.
※ 기본적으로 private 상속은 설계 중에는 아무 의미가 없으며 구현 중에만 의미를 가진다.
객체 합성의 장점
is-implemented-in-terms-of는 객체 합성의 의미 이기도 한데, 이 두 구현 중 가능하면 객체 합성을 사용하는 게 좋다.
객체 합성의 장점은 다음과 같다.
- 파생은 가능하게 하되, 파생 클래스에서 가상 함수를 재정의 할 수 없도록 할 수 있다.
- 컴파일 의존성을 최소화할 수 있다.
※ 빈 클래스를 상속받는 특수한 상황이 아니면 객체 합성을 사용하는 편이 일반적으로 낫다.