728x90
1. 개요
오늘은 가상함수의 필수 가상함수 테이블(Virtual Table)에 위치에 대해 알아보도록하겠습니다.
2. VTable이란?
가상함수 테이블은 클래스 내에서 맴버함수를 virtual 키워드로 지정하면 생성되는 테이블입니다.
특수한 메모리 영역을 활용하여 알맞는 함수를 호출하는데 보통 함수 포인터로 지정이되있습니다.
또한, 가상함수 테이블은 한 객체당 하나의 테이블만 지정이되있으며 함수가 아무리 많아도 한개만 되있습니다.
가상함수 테이블은 OOP의 특징중 다양성을 띄고 있으며 동적 바인딩으로 상속에서 매우 중요한 역할을 합니다.
예전에 올렸던 가상함수 테이블에 대해 링크를 올리겠습니다.
https://chogyujin-study.tistory.com/23
3. 그래서 어디에?
가상함수 테이블은 vPointer가 vTable을 가리키게 되고, vTable은 컴파일러에 의해 함수 포인터를 가리키는 자료구조로 완성이 됩니다.
또한, 가르키는 함수 포인터는 특징 객체에 맞는 포인터를 가지게 됩니다.
그래서 수소문 결과 코드 영역에 저장된다는것을 알게되었습니다.
그 이유는 생성된 객체가 vTable을 통해 접근해야 하는데 전역으로 공유되어야 하기 떄문이라고 합니다.
3. Ref
https://guru.tistory.com/125?category=1038889
'개발자 면접 공부 > C-C++' 카테고리의 다른 글
C++ for문 증감문에 전위연산자 vs 후위연산자 속도 차이 (1) | 2024.04.03 |
---|---|
NULL 포인터로 객체의 함수가 왜 호출되냐? (0) | 2024.03.26 |
초기화자 리스트(intializer_list) (0) | 2024.03.08 |
유니폼 초기화 (0) | 2024.03.06 |
C++ vs C# (1) | 2024.02.18 |