Language/C++

[C++] RTTI (RunTime Type Information)

마탁이 2020. 12. 15. 16:10

1. RTTI ?

  - 실시간 정보 타입
  - 실행 중 타입에 대한 정보가 필요할 때 사용하는 기능.
   > 언어가 제공하는 표준이므로 호환성, 이식성이 확보되어 있다.
  - 가상 함수가 있는 클래스에 대해서만 동작한다.
   > 클래스의 타입 관련 정보가 vtable에 같이 저장되기 때문이다.
   > 가상 함수가 없는 클래스는 실행 중에 타입 정보를 알아야 할 필요가 없다.
   > 컴파일러는 컴파일 번역 작업이 끝나면 타입 이름을 실행파일에 남길 필요가 없어 RTTI로 정보를 가져온다.
  - RTTI가 제대로 동작하기 위해서는 모든 클래스에 타입과 관련된 정보를 작성해야한다.
   > 프로그램이 느려지고 용량이 커지는 문제가 있다.
   > 따라서 RTTI 기능을 사용할 것인지 아닌지에 대한 옵션 조정이 있다.
     (Visual Studio 기준 구성/속성 -> C/C++ -> 언어 -> 런타임 형식 정보 사용)

 

 

2. typeid 연산자
  - 클래스의 이름이나 객체 또는 객체를 가리키는 포인터를 피연산자로 취하며 피 연산자의 타입을 조사한다.
  - typeid를 사용하기 위해 typeinfo 헤더 파일을 포함한다 : #include <typeinfo>
  - 프로젝트 설정 대화상자 -> RTTI 옵션 선택
  - 형태 : typeid (자료형);
  - 리턴 타입 : const type_info &

'Language > C++' 카테고리의 다른 글

[C++] 포인터와 배열의 차이  (0) 2020.12.15
[C++] 캐스트 연산자  (0) 2020.12.15
[C++] 상속의 3가지 관계와 가상 소멸자  (0) 2020.12.15
[C++] 컴파일 과정  (0) 2020.12.15
[C++] 컴파일 / 런타임 / 논리 오류  (0) 2020.12.15