Back to questions
Junior — Middle
87
Мог бы ты описать различные типы полиморфизма, используемые в объектно-ориентированном программировании?
Answer from AI
sobes.tech AI
В объектно-ориентированном программировании (ООП) полиморфизм позволяет объектам разных классов обрабатываться через единый интерфейс. Основные типы полиморфизма:
-
Компиляционный (статический) полиморфизм — определяется во время компиляции.
- Перегрузка функций (function overloading): несколько функций с одним именем, но разными параметрами.
- Перегрузка операторов (operator overloading): определение поведения операторов для пользовательских типов.
-
Полиморфизм времени выполнения (динамический полиморфизм) — определяется во время выполнения.
- Виртуальные функции в C++: базовый класс объявляет функцию как
virtual, а производные классы переопределяют её. Вызов функции через указатель или ссылку на базовый класс вызывает версию производного класса.
- Виртуальные функции в C++: базовый класс объявляет функцию как
Пример динамического полиморфизма на C++:
#include <iostream>
class Animal {
public:
virtual void sound() { std::cout << "Some sound" << std::endl; }
};
class Dog : public Animal {
public:
void sound() override { std::cout << "Bark" << std::endl; }
};
void makeSound(Animal& a) {
a.sound();
}
int main() {
Dog d;
makeSound(d); // Выведет "Bark"
return 0;
}
Таким образом, полиморфизм позволяет писать более гибкий и расширяемый код.