abstract

기반 포인터로 삭제될 수 있으면 추상 클래스의 소멸자도 virtual 계약이다

객체를 직접 만들 수 없어도 Base 포인터로 파생 객체 수명을 끝낼 수 있다.

생성Derived를 만들 수 있다
보관Base* 또는 unique_ptr<Base>
삭제Base 경로로 수명 종료
필수 계약virtual ~Base()
삭제 경로소멸자 계약결과
delete Derived*일반 소멸자도 동작구체 타입을 알고 삭제
delete Base*virtual 필요Derived → Base 순서 보장
unique_ptr<Base>virtual 필요소유권과 다형성 동시 표현

핵심 추상 클래스도 Base 포인터로 지워질 수 있으면 소멸자는 호출 계약의 일부다.