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

Можете объяснить назначение и работу ключевого слова 'virtual' в объектно-ориентированном программировании?

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

sobes.tech AI

Ключевое слово virtual в C++ используется для объявления виртуальных функций — методов класса, которые могут быть переопределены в производных классах и вызываются динамически (во время выполнения), а не статически (во время компиляции). Это основа полиморфизма в объектно-ориентированном программировании.

Когда функция объявлена как virtual в базовом классе, вызов этой функции через указатель или ссылку на базовый класс будет направлен на версию функции, соответствующую реальному типу объекта (даже если тип переменной — базовый).

Пример:

#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* ptr = new Derived();
    ptr->show(); // Выведет "Derived show" благодаря virtual
    delete ptr;
    return 0;
}

Без virtual вызов ptr->show() вызвал бы метод базового класса, игнорируя переопределение в производном классе.

Таким образом, virtual позволяет реализовать динамический полиморфизм, что важно для гибкой архитектуры программ.