VIRTUAL DISPATCH

C++ 다형성은 기반 타입으로 호출하되 실제 객체의 override를 실행한다

포인터나 참조로 다뤄야 동적 바인딩이 유지되고, 값 전달은 객체 슬라이싱으로 파생 정보를 잃을 수 있다.

정적 바인딩

컴파일 시점 타입 기준으로 호출 대상이 결정된다. 기반 값으로 복사하면 파생 부분이 잘린다.

void print(Animal a)

동적 바인딩

virtual 함수와 참조/포인터를 쓰면 런타임 실제 객체의 override가 호출된다.

void print(const Animal& a)
필수 조건기반 함수에 virtual을 붙인다.
API 형태값 전달보다 참조와 포인터를 쓴다.
소멸자기반 클래스 소멸자는 virtual로 둔다.