polymorphism
가상 함수가 기대와 다르면 값 잘림, virtual, override, 소멸자 순서로 본다
다형성 오류는 실제 객체를 잃었거나 가상 호출 계약이 불완전할 때 생긴다.
1. 잘림Base 값 복사 여부
2. virtualBase 선언 위치 확인
3. overrideconst, 매개변수까지 일치
4. 소멸자Base* delete 경로 확인
| 증상 | 가장 먼저 볼 것 | 수정 방향 |
|---|---|---|
| 항상 Base 출력 | 값 전달 또는 비가상 함수 | Base&와 virtual |
| override가 안 잡힘 | 시그니처 불일치 | override 키워드로 검증 |
| 삭제 때 누수 | 소멸자 비가상 | virtual ~Base() |
핵심 다형성 버그는 호출 결과보다 먼저 객체가 보존됐는지와 함수 계약이 맞는지를 좁혀야 한다.