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 |