Назад к вопросам
Открытые Решения
Junior — Middle
87
Можете объяснить, что представляет собой виртуальная функция в объектно-ориентированном программировании?
Компании, где спрашивали
LestaGames
Ответ от нейросети
sobes.tech AI
Виртуальная функция в объектно-ориентированном программировании (на примере 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"
delete ptr;
return 0;
}
Без virtual вызов ptr->show() вызвал бы метод базового класса, игнорируя переопределение в производном классе.
Таким образом, виртуальные функции обеспечивают динамический (рантайм) полиморфизм.