polymorphism
호출 결과는 전달 방식, virtual 여부, 실제 객체 순서로 판정한다
같은 draw 호출도 값 잘림, 가상 호출, 런타임 타입 보존 여부에 따라 결과가 달라진다.
값 전달복사 순간 Derived가 잘림
비가상 호출정적 타입의 함수로 고정
virtual 호출vptr로 실제 구현 탐색
삭제소멸자도 가상 계약 필요
| 질문 | 예 | 아니오 |
|---|---|---|
| 값으로 넘겼나? | Base 부분만 남음 | 다음 질문 |
| 함수가 virtual인가? | 런타임 타입으로 분기 | Base 함수로 고정 |
| 삭제가 Base*인가? | virtual destructor 확인 | 호출 결과만 확인 |
핵심 결과가 안 맞으면 값 전달인지, virtual인지, 삭제 경로가 있는지를 순서대로 본다.