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 base | Base 포인터 | virtual 소멸자 체인 |
핵심 같은 Base 호출이라도 실제 객체가 다르면 실행되는 함수가 달라지는 것이 다형성이다.