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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • noexcept — контракт «не выходить через исключение»

    C++ SELF
    46 уровень,0 лекция
    Разбираем, что на самом деле означает спецификатор noexcept в C++: почему это именно контракт, что происходит при его нарушении (вызов std::terminate()), почему контейнеры вроде std::vector<T> особенно ценят noexcept у move-операций, и как честно понять, можно ли помечать функцию как “не бросающую”.
    Открыта
  • Возврат по значению и copy elision (NRVO)

    C++ SELF
    46 уровень,1 лекция
    Разбираем, почему возвращать объект из функции по значению — это нормально в современном C++: что происходит при return (копирование, перемещение или устранение лишних операций), как работает copy elision и оптимизация NRVO, почему std::move в return чаще всего не нужен, и как это выглядит на практике на учебном типе Buffer (владеющий ресурсом, move-семантика, корректный жизненный цикл).
    Открыта
  • Состояние «после move»: валидно, но ...

    C++ SELF
    46 уровень,2 лекция
    Разбираем, что означает контракт «valid but unspecified» для moved-from объектов в C++: почему после std::move нельзя читать старые данные, но можно безопасно разрушать объект, присваивать ему новое значение и снова перемещать. На примере std::string показываем, почему «строка стала пустой» — не гарантия, а частная реализация. Затем проектируем свой тип Text с понятными инвариантами ( nullptr/ 0), обсуждаем «полупустые» состояния, таблицу допустимых действий и типичные ошибки.
    Открыта
  • Возврат ссылки на локальную переменную

    C++ SELF
    46 уровень,3 лекция
    Разбираем одну из самых частых причин UB в C++: как появляются dangling reference и dangling pointer при попытке вернуть из функции T * или T & на локальный объект. Понимаем время жизни локальных переменных при return, смотрим антипримеры, выбираем безопасный дефолт (возврат по значению), и фиксируем корректные альтернативы: std::optional<T> и указатель на элемент контейнера с явным контрактом.
    Открыта
  • Время жизни временных объектов

    C++ SELF
    46 уровень,4 лекция
    Разбираем, что такое временные объекты (temporary) в C++, что означает «полное выражение» и почему временный обычно живёт только до ;. На примерах со std::string и ссылками показываем, когда работает продление жизни через const T &, почему нельзя возвращать ссылку на временный из return, и как не получить dangling reference при «оптимизациях».
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush