Sobes.tech
Назад к вопросам
Junior — Middle
88

Мог бы ты описать различные типы полиморфизма, используемые в объектно-ориентированном программировании?

Ответ от нейросети

sobes.tech AI

В объектно-ориентированном программировании (ООП) полиморфизм позволяет объектам разных классов обрабатываться через единый интерфейс. Основные типы полиморфизма:

  1. Компиляционный (статический) полиморфизм — определяется во время компиляции.

    • Перегрузка функций (function overloading): несколько функций с одним именем, но разными параметрами.
    • Перегрузка операторов (operator overloading): определение поведения операторов для пользовательских типов.
  2. Полиморфизм времени выполнения (динамический полиморфизм) — определяется во время выполнения.

    • Виртуальные функции в C++: базовый класс объявляет функцию как virtual, а производные классы переопределяют её. Вызов функции через указатель или ссылку на базовый класс вызывает версию производного класса.

Пример динамического полиморфизма на 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;
}

Таким образом, полиморфизм позволяет писать более гибкий и расширяемый код.