Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Visual Studio

가상함수, RTTI 본문

Programming Language

가상함수, RTTI

emacser 2022. 6. 14. 06:39

Virtual Function

키워드

static binding(early binding)

dynamic binding(late binding)

v-table(virtual function table)

override 키워드

주요 내용

https://www.geeksforgeeks.org/virtual-function-cpp/

1. virtual이면서 static 함수일 수 없다.

2. virtual이면서 다른 클래스의 friend일 수 있다.

3. 런타임 다형성을 위해 가상 함수는 기초 클래스의 포인터나 레퍼런스로 접근할 수 있다.

4. 상속된 클래스의 가상 함수 프로토타입 선언은 기초 클래스와 같아야 한다.

5. 가상 함수는 기초 클래스와 override한 상속된 클래스에서 항상 정의되어 있다. 상속된 클래스에서 꼭 override 하지

   않아도 되지만 이 경우 함수 호출시 기초 클래스의 함수가 호출된다.

6. 가상 소멸자는 가능하나 가상 생성자는 불가능하다.

참고자료들

[TCPSchool] 가상 함수

[GeeksForGeeks] Virtual Function in C++

[KLDP] 생성자에서 가상함수를 호출하지 말자는 주장에 대해

[BLOG] [C++] 가상 함수(virtual function)와 가상 함수 테이블(virtual table)

[Artima] Never Call Virtual Functions during Construction or Destruction An Excerpt from Effective C++, Third Edition

RTTI

키워드

dynamic_cast

typeid

type_info

주요 내용

dynamic_cast는 static_cast가 가능한지 먼저 확인하고, 분석이 불가능하면 RTTI로 분석하는 방식으로 구현되어있다.

참고자료들

[BLOG] RTTI(Run Time Type Information)

[BLOG] [C++] RTTI, 타입 정보 얻기

[BLOG] RTTI