상속은 코드 재사용보다 대체 가능성과 수명 규칙을 먼저 통과해야 한다
public 상속은 부모 자리에 자식을 넣어도 된다는 강한 설계 약속이다.
is-aBase 자리에 Derived가 자연스러운가
공개 범위public 상속이 맞는 관계인가
수명Base 포인터 삭제 가능성
대안has-a 합성이 더 단순한가
| 점검 질문 | 통과하면 | 막히면 |
|---|---|---|
| 진짜 is-a인가? | public 상속 후보 | 합성으로 전환 |
| Base API를 노출해도 되나? | 대체 가능성 확인 | private/protected 또는 합성 |
| Base*로 삭제되나? | virtual 소멸자 필요 | 소유권 경로 단순화 |
핵심 상속은 코드 재사용이 아니라 대체 가능성, 공개 범위, 수명 계약을 통과할 때 선택한다.