Decision Matrix

다중 상속은 diamond, virtual, ctor, compose 네 단어로 최종 판단한다

설계가 복잡해질수록 코드 가능 여부보다 상태 중복과 생성 책임을 표로 확인해야 합니다.

diamond

공통 기반이 두 경로로 들어오는가

같은 기반 클래스가 반복되면 이름 모호성과 중복 상태가 생길 수 있습니다.

virtual

공유 기반을 하나로 묶을 수 있는가

`virtual public`으로 공유 기반을 한 번만 유지할 수 있는지 확인합니다.

ctor

최종 파생 클래스가 초기값을 정하는가

가상 기반 클래스는 최종 파생 클래스의 생성자에서 초기화합니다.

compose

합성이 더 단순한가

상속 그래프가 설명하기 어렵다면 멤버 객체 조합이 더 읽기 쉽습니다.

최종 결론

다중 상속은 인터페이스 조합이면 비교적 안전하고, 상태를 가진 클래스 조합이면 diamond와 초기화 책임을 먼저 통과해야 합니다.