1. RTTI(Run-Time Type Information)- 객체의 유형을 실행시에 결정할 수 있도록 하는 기능입니다.
- 객체의 다형성을 기반으로 하는 기능입니다.
예제)
http://www.winapi.co.kr/clec/cpp3/33-1-1.htm의 소스를 가지고 왔습니다.
- 실행결과
- 실행결과에도 나오듯이 강제로 캐스팅을 한 결과 엉뚱한 값이 나와버렸습니다.
실제 포인터형만 가지고는 실제 포인팅되어 있는 객체가 무엇인지를 알 수 없기 때문에 이를 보완하기 위해 최근 표준으로 정의된 기능이 RTTI라고 할 수 있습니다
.(Child형 포인터지만 포인팅되어 있는 주소에 있는 객체가 Parent객체 인지 Child객체인지는 포인터만 가지고는 알 수 없지요.)- RTTI를 구현하는 대표적인 예가 앞에서 언급한 dynamic_cast라고 할 수 있습니다.
dynamic_cast를 통해 기본클래스 포인터를 파생클래스 포인터로 형변환 할 수 있고 이를 통해
적절한 행동이 일어나도록 할 수 있습니다.