Sobes.tech
Назад к вопросам
Junior — Middle
83

Объясните концепцию таблицы виртуальных функций в объектно-ориентированном программировании.

Ответ от нейросети

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, благодаря таблице виртуальных функций.