JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • virtual/override — динамический полиморфизм

    C++ SELF
    51 уровень,0 лекция
    Разбираем динамический полиморфизм в C++: зачем базовому классу нужны virtual-методы, как работает «виртуальный вызов» через Base &/ Base *, чем отличается статический тип от реального, и почему override — это защита от «почти совпавшей» сигнатуры. В конце — прикладной пример с действиями ( Action) и разбор типичных ошибок.
    Открыта
  • Object slicing — Base b = Derived{} ломает полиморфизм

    C++ SELF
    51 уровень,1 лекция
    Разбираем, что такое object slicing в C++: почему конструкция «объект базового типа по значению» ( Base ← Derived) «срезает» наследника и выключает виртуальные вызовы, где slicing прячется в параметрах и контейнерах (например, std::vector<Base>), и как правильно проектировать интерфейсы и хранение через const Base & и std::unique_ptr.
    Открыта
  • Виртуальный деструктор

    C++ SELF
    51 уровень,2 лекция
    Разбираем, почему деструктор — часть контракта класса, и что происходит при уничтожении объекта через базовый указатель/владение: delete по Base* и std::unique_ptr<Base> обязаны вызывать правильную цепочку разрушения. Показываем опасный кейс без virtual деструктора, формулируем правило virtual ~Base() = default, добавляем диаграмму выбора и разбираем типичные ошибки и дисциплину override.
    Открыта
  • final и запрет наследования — когда полезно

    C++ SELF
    51 уровень,3 лекция
    Разбираем, зачем в C++ использовать final для классов и виртуальных методов: как запрет наследования защищает инварианты, почему связка override final фиксирует контракт, как проектировать иерархии в стиле «база расширяемая — листья final», и почему final не отменяет необходимость virtual-деструктора при владении через std::unique_ptr< Command>. В конце — типичные ошибки и практический пример CLI-команд.
    Открыта
  • Цена полиморфизма

    C++ SELF
    51 уровень,4 лекция
    Разбираем «стоимость» динамического полиморфизма в C++: чем виртуальный вызов через Base&/ Base* отличается от обычного, почему вместе с virtual почти неизбежно приходят владение и время жизни (например, std::unique_ptr), как базовый контракт связывает код и удорожает сопровождение, и когда полиморфизм действительно оправдан. В конце сравниваем альтернативы: enum class + switch, передача поведения лямбдой через std::function, и закрытые наборы типов через std::variant.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush