polymorphism
다형성 문제는 값 복사, virtual, 수명 계약 순서로 좁힌다
Base 참조/포인터 모양만으로 충분하지 않고 호출과 삭제 경로까지 확인해야 한다.
복사 금지Base 값 컨테이너 피하기
호출 계약virtual + override
수명 계약virtual destructor
소유권unique_ptr<Base>로 표현
| 설계 질문 | A급 답 | 피해야 할 답 |
|---|---|---|
| 여러 Derived를 담나? | 참조/포인터 컬렉션 | vector<Base> |
| 호출이 바뀌어야 하나? | Base virtual + Derived override | 이름만 같은 함수 |
| Base로 지우나? | virtual destructor | 비가상 소멸자 |
핵심 다형성 API는 전달, 호출, 삭제, 소유권 네 계약이 동시에 맞아야 안정적이다.