계약 선언
기반 클래스에 draw(), area() 같은 필수 동작을 순수 가상 함수로 둔다.
interface순수 가상 함수로 다형 계약을 만들 때는 override뿐 아니라 base pointer 삭제, virtual destructor, default 구현, 객체 slicing까지 같이 봐야 안전하다.
기반 클래스에 draw(), area() 같은 필수 동작을 순수 가상 함수로 둔다.
interface파생 클래스가 override로 정확한 시그니처를 구현한다.
컴파일 점검Shape*나 unique_ptr<Shape>로 실제 타입을 숨기고 가상 호출을 수행한다.
dynamic dispatchbase 포인터로 삭제될 수 있으면 virtual destructor가 필요하다.
cleanup