Multiple Inheritance

다중 상속 공유 기반

두 부모가 같은 조상을 가지면 기반 객체가 둘 생길 수 있으므로, 상태 공유 여부와 초기화 책임을 먼저 분리해야 합니다.

안전한 경우상태 없는 인터페이스 여러 개를 한 클래스가 구현합니다.
위험한 경우두 경로가 같은 데이터 멤버를 각각 갖게 되어 의미가 갈라집니다.
diamond

중복 기반을 찾습니다

A - B/C - D 모양이면 A 부분 객체가 몇 개인지 확인합니다.

virtual

공유 조상은 하나로 둡니다

virtual 상속은 최종 파생 클래스가 공통 기반 하나를 초기화하게 만듭니다.

role

역할 상속은 얇게 둡니다

상태보다 순수 가상 함수 중심의 인터페이스라면 충돌 가능성이 작습니다.

사용 후보로깅 가능, 직렬화 가능처럼 독립 역할을 조합합니다.
가상 상속공통 기반 상태를 하나만 유지해야 할 때 선택합니다.
대안동작 조합만 필요하면 멤버 객체와 위임으로 더 단순하게 만듭니다.

공유 기반 다중 상속은 “부모가 둘”이라는 모양보다 “공유 상태와 초기화 책임이 어디에 있는가”가 핵심입니다.