[c++] 가상 함수 테이블(virtual function table)
가상 함수 테이블은 해당 클래스의 모든 가상 함수에 대한 포인터를 포함하는 테이블입니다. 각 객체가 생성될 때마다 이 테이블이 만들어지며, 이에 대한 포인터가 객체에 추가됩니다.
다음은 간단한 예시를 통해 가상 함수 테이블의 동작 원리를 살펴보겠습니다.
#include <iostream>
class Base {
public:
virtual void display() {
std::cout << "Base display called" << std::endl;
}
};
class Derived : public Base {
public:
void display() override {
std::cout << "Derived display called" << std::endl;
}
};
int main() {
Base *basePtr;
Derived derivedObj;
basePtr = &derivedObj;
// 가상 함수 테이블을 통해 Derived 클래스의 display 함수를 호출합니다.
basePtr->display();
return 0;
}
위의 코드는 가상 함수 테이블을 사용하여 파생 클래스의 함수를 호출하는 간단한 예시입니다.
더 자세한 내용은 아래 참고 자료를 참조하시기 바랍니다.
참고 자료:
- https://en.cppreference.com/w/cpp/language/virtual
- https://docs.microsoft.com/en-us/cpp/cpp/virtual-functions?view=msvc-160