abstract
기반 포인터로 삭제될 수 있으면 추상 클래스의 소멸자도 virtual 계약이다
객체를 직접 만들 수 없어도 Base 포인터로 파생 객체 수명을 끝낼 수 있다.
생성Derived를 만들 수 있다
보관Base* 또는 unique_ptr<Base>
삭제Base 경로로 수명 종료
필수 계약virtual ~Base()
| 삭제 경로 | 소멸자 계약 | 결과 |
|---|---|---|
| delete Derived* | 일반 소멸자도 동작 | 구체 타입을 알고 삭제 |
| delete Base* | virtual 필요 | Derived → Base 순서 보장 |
| unique_ptr<Base> | virtual 필요 | 소유권과 다형성 동시 표현 |
핵심 추상 클래스도 Base 포인터로 지워질 수 있으면 소멸자는 호출 계약의 일부다.