Visual Studio
가상함수, RTTI 본문
Virtual Function
키워드
static binding(early binding)
dynamic binding(late binding)
v-table(virtual function table)
override 키워드
주요 내용
1. virtual이면서 static 함수일 수 없다.
2. virtual이면서 다른 클래스의 friend일 수 있다.
3. 런타임 다형성을 위해 가상 함수는 기초 클래스의 포인터나 레퍼런스로 접근할 수 있다.
4. 상속된 클래스의 가상 함수 프로토타입 선언은 기초 클래스와 같아야 한다.
5. 가상 함수는 기초 클래스와 override한 상속된 클래스에서 항상 정의되어 있다. 상속된 클래스에서 꼭 override 하지
않아도 되지만 이 경우 함수 호출시 기초 클래스의 함수가 호출된다.
6. 가상 소멸자는 가능하나 가상 생성자는 불가능하다.
참고자료들
[GeeksForGeeks] Virtual Function in C++
[KLDP] 생성자에서 가상함수를 호출하지 말자는 주장에 대해
[BLOG] [C++] 가상 함수(virtual function)와 가상 함수 테이블(virtual table)
RTTI
키워드
dynamic_cast
typeid
type_info
주요 내용
dynamic_cast는 static_cast가 가능한지 먼저 확인하고, 분석이 불가능하면 RTTI로 분석하는 방식으로 구현되어있다.
참고자료들
'Programming Language' 카테고리의 다른 글
유니코드 한글 초성 중성 종성 분리하기 (0) | 2022.06.26 |
---|---|
memset의 함정 (은근 착각하기 쉬움) (0) | 2022.06.19 |
C++ 재활 (0) | 2022.04.06 |
Virtual Function in C++ (0) | 2022.03.04 |
[C/C++] 가변인자 매크로로 함수 호출시 불필요한 쉼표 생략하는법 (0) | 2021.11.22 |