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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Include guards и #pragma once

    C++ SELF
    27 уровень,0 лекция
    Разбираем, почему повторное включение заголовков через #include приводит к ошибкам переопределения, на каком этапе работает препроцессор, и как защитить заголовки с помощью #ifndef/ #define/ #endif (include guard) или директивы #pragma once. Закрепляем на мини-проекте и обсуждаем типичные ошибки: забытый #endif, неуникальные макросы и «дыры» в защите.
    Открыта
  • “Include what you use”: минимизация зависимостей

    C++ SELF
    27 уровень,1 лекция
    Разбираем практический принцип Include What You Use в C++: как делать заголовки самодостаточными, избегать транзитивных зависимостей, разделять интерфейс ( .hpp) и реализацию ( .cpp), выбирать лёгкие заголовки вроде <iosfwd> вместо тяжёлых ( <iostream>) и почему полезно подключать свой заголовок первым. На примерах с std::string, std::vector и модулями мини-проекта показано, как уменьшать время сборки и повышать устойчивость к рефакторингу.
    Открыта
  • Forward declaration

    C++ SELF
    27 уровень,2 лекция
    Разбираем, как предварительное объявление ( forward declaration) помогает “облегчать” заголовки в C++: что именно знает компилятор после struct/ class X ;, где можно использовать неполный тип (указатели/ссылки), где нельзя (хранение по значению, доступ к полям, контейнеры), как выстроить правило « .hpp — декларации, .cpp — тяжёлые #include», и какие типичные ошибки приводят к сообщениям про incomplete type.
    Открыта
  • Циклические зависимости — как разруливать

    C++ SELF
    27 уровень,3 лекция
    Разбираем, что такое циклические зависимости в C++ (когда A.hpp тянет B.hpp, а тот — обратно), почему #pragma once не делает тип «полным», как читать ошибки про incomplete type, и какими практическими приёмами разрывать цикл: forward declaration + */ &, перенос #include из .hpp в .cpp, либо хранение связи через id вместо объекта.
    Открыта
  • Шаблоны и заголовки

    C++ SELF
    27 уровень,4 лекция
    Разбираем практическое правило работы с шаблонами в C++: почему определение template должно быть видно в месте использования, почему “объявили в .hpp, определили в .cpp” ломается, как правильно хранить реализацию в .hpp или подключаемых файлах .tpp/ .inl, и какие ошибки чаще всего возникают (включая не-самодостаточные заголовки, лишние зависимости и using namespace в заголовке).
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush