Sobes.tech
Back to questions
Junior — Middle
86

Можете объяснить, что представляет собой виртуальная функция в объектно-ориентированном программировании?

Companies where asked
Открытые РешенияОткрытые Решения
LestaGames

Answer from AI

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() вызвал бы метод базового класса, игнорируя переопределение в производном классе.

Таким образом, виртуальные функции обеспечивают динамический (рантайм) полиморфизм.