Можете объяснить назначение и работу ключевого слова 'virtual' в объектно-ориентированном программировании?
Answer from AI
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 позволяет реализовать динамический полиморфизм, что важно для гибкой архитектуры программ.