Что такое virtual в C++?
Слово virtual применяется к функциям в базовом классе для обозначения, что эти функции могут быть переопределены в производных классах. Этот механизм является ключевым для реализации полиморфизма, что позволяет вызывать функции производных классов через указатели и ссылки на базовый класс.
Объявление виртуальной функции в базовом классе:
class Shape {
public:
// Объявление виртуальной функции
virtual void draw() const {
std::cout << "Drawing a shape." << std::endl;
}
};
Здесь virtual перед функцией draw() обозначает, что эта функция может быть переопределена в производных классах.
Переопределение виртуальной функции в производном классе:
class Circle : public Shape {
public:
// Переопределение виртуальной функции
void draw() const override {
std::cout << "Drawing a circle." << std::endl;
}
};
В производном классе Circle функция draw() переопределена для реализации конкретного рисования круга.
Использование virtual позволяет реализовывать полиморфизм, что упрощает создание иерархий классов и обеспечивает гибкость при работе с объектами разных типов через указатели и ссылки на базовый класс.