📚책읽기

[C++] RTTI, dynamic_cast, typeid

공대 컴린이 2023. 2. 21. 10:14
728x90

RTTI (Runtime Type Identification, 실행 시간 데이터형 정보)

- RTTI의 목적은 프로그램이 실행 도중에 객체의 데이터형을 결정하는 표준 방법을 제공하는 것이다.

- RTTI는 가상 함수들을 가지고 있는 클래스들에 대해서만 사용할 수 있다.

- dynamic_cast, typeid, type_info 의 총 3가지 연산자는 RTTI를 지원하는 요소를 갖는다.

dynamic_cast

- 가장 많이 사용되는 RTTI의 요소로써, 포인터가 지시하는 객체형이 무엇인지 알려주지 않고, 대신 그 객체의 주소를 특정형의 포인터에 안전하게 대입할 수 있는지를 알려준다.

- 사용예제: Superb* pm = dynamic_cast<Superb*> (pg);

typeid

- typeid 연산자를 사용하면 두 객체의 데이터형이 같은지 결정할 수 있다.

- type_info 객체에 대한 참조를 리턴한다.

728x90