polymorphism

C++ 다형성은 Base로 부르고 Derived가 실행되는 구조다

값 복사를 피하고 참조/포인터와 virtual을 함께 써야 실제 override가 호출된다.

호출 모양Base& 또는 Base*
실제 객체Dog, Cat처럼 다른 타입
분기 지점virtual 멤버 함수
결과Derived 구현 실행
호출 코드컴파일러가 보는 타입실행 때 결정되는 것
a.sound()Animal 인터페이스Dog::sound 또는 Cat::sound
draw(shape)Shape 참조Circle, Rect의 draw
delete baseBase 포인터virtual 소멸자 체인

핵심 같은 Base 호출이라도 실제 객체가 다르면 실행되는 함수가 달라지는 것이 다형성이다.