Объектілі-бағытталған бағдарламалауда виртуалды функция кестесінің ұғымын түсіндіріңіз.
AI-дан жауап
sobes.tech AI
Таблица виртуальных функций (vtable) — это механизм, который используется в C++ для реализации полиморфизма через виртуальные функции. Когда класс содержит виртуальные методы, компилятор создаёт для него специальную таблицу указателей на эти функции. Каждый объект такого класса содержит скрытый указатель на эту таблицу.
При вызове виртуальной функции через указатель или ссылку на базовый класс программа обращается к vtable, чтобы определить, какую именно версию функции вызвать — базовую или переопределённую в производном классе. Это позволяет реализовать динамический (рантайм) полиморфизм.
Пример:
#include <iostream>
class Base {
public:
virtual void show() { std::cout << "Base show" << std::endl; }
};
class Derived : public Base {
public:
void show() override { std::cout << "Derived show" << std::endl; }
};
int main() {
Base* obj = new Derived();
obj->show(); // Вызовет Derived::show благодаря vtable
delete obj;
return 0;
}
Здесь вызов obj->show() во время выполнения определяет, что нужно вызвать метод из класса Derived, а не из Base, благодаря таблице виртуальных функций.