RadioProg
  • Статьи
    • Радиоэлектроника
      • Антенны и распространение радиоволн
      • Беспроводная связь
      • Высокочастотная техника
      • Волоконно-оптические линии связи (ВОЛС)
      • Измерительная техника
      • Исполнительные механизмы и драйверы
      • САПР
      • Спутниковая связь
      • Схемотехника
      • Телевидение
      • Цифровая электроника
      • Технологии и инструменты
      • Электронные компоненты
      • А что внутри?
      • Прочее (радиоэлектроника)
    • Программирование
      • Алгоритмы и структуры данных
      • Базы данных
      • Веб-разработка
      • Мультимедиа (разработка ПО)
      • Нейронные сети
      • Паттерны проектирования
      • Связь
      • Системы сборки ПО
      • Языки программирования
    • IT
      • Компьютерные сети
      • Операционные системы
      • Верстка
      • Системы контроля версий
    • Прочее
      • История технологий
      • Мультимедиа
      • Новости телекома
      • Нормативная документация
      • Охрана труда
      • Полезные программы
      • Просто интересно
      • Экономика телекоммуникаций и электронной промышленности
      • Экономика и инвестиции
  • Книги / руководства
  • Инструменты
    • Калькуляторы
  • Описания / ссылки на магазины
    • RF, Wi-Fi, Bluetooth, GSM, GPRS, GPS
    • Датчики
    • Дисплеи, индикаторы, светодиоды
    • Исполнительные механизмы и драйверы
    • Источники питания
    • Кнопки, клавиатуры, потенциометры
    • Макетирование
    • Одноплатные компьютеры
    • Отладочные платы
    • Платы расширения (shields)
    • Преобразователи, переходники, кабели
    • Прочие радиодетали
    • Приборы, инструменты, расходные материалы
    • Прочее (тех. описания, ссылки)
  1. Программирование
  2. Языки программирования
  3. C++
  1. Книги / руководства / серии статей

Изучаем C++

Сборник уроков по программированию на C++. Независимо от того, имели ли вы опыт программирования или нет, учебные материалы данного учебника проведут вас через все этапы написания, компиляции и отладки ваших программ на C++, и всё это снабжено большим количеством примеров.

Стать экспертом в одночасье нельзя, но, проявив немного терпения, вы добьетесь этого. 

Глава 0 – Введение / Начало работы
  • 0.2 – Введение в языки программирования
  • 0.3 – Введение в C/C++
  • 0.4 – Введение в разработку на C++
  • 0.5 – Введение в компилятор, компоновщик (линкер) и библиотеки
  • 0.6 – Интегрированная среда разработки (IDE)
  • 0.7 – Компиляция вашей первой программы
  • 0.8 – Несколько распространенных проблем C++
  • 0.9 – Настройка компилятора: конфигурации сборки
  • 0.10 – Настройка компилятора: расширения компилятора
  • 0.11 – Настройка компилятора: уровни предупреждений и ошибок
  • 0.12 – Настройка компилятора: выбор стандарта языка C++
Глава 1 – Основы C++
  • 1.1 – Инструкции и структура программы на C++
  • 1.2 – Комментарии в C++
  • 1.3 – Знакомство с переменными в C++
  • 1.4 – Присваивание и инициализация переменных
  • 1.5 – Знакомство с iostream: cout, cin и endl
  • 1.6 – Неинициализированные переменные и неопределенное поведение
  • 1.7 – Ключевые слова и именование идентификаторов в C++
  • 1.8 – Пробельные символы и базовое форматирование кода
  • 1.9 – Знакомство с литералами и операторами
  • 1.10 – Знакомство с выражениями в C++
  • 1.11 – Разработка первой программы на C++
  • 1.x – Резюме к главе 1 и небольшой тест
Глава 2 – Основы C++: функции и файлы
  • 2.1 – Знакомство с функциями в C++
  • 2.2 – Возвращаемые значения функций
  • 2.3 – Введение в параметры и аргументы функций
  • 2.4 – Локальная область видимости в C++
  • 2.5 – Почему функции полезны, и как эффективно их использовать
  • 2.6 – Предварительные объявления и определения
  • 2.7 – Программы с несколькими файлами исходного кода
  • 2.8 – Конфликты имен и пространства имен
  • 2.9 – Знакомство с препроцессором
  • 2.10 – Заголовочные файлы
  • 2.11 – Защита заголовков
  • 2.12 – Как разработать свою первую программу
  • 2.x – Резюме к главе 2 и небольшой тест
Глава 3 – Отладка программ на C++
  • 3.1 – Синтаксические и семантические ошибки
  • 3.2 – Процесс отладки
  • 3.3 – Стратегия отладки
  • 3.4 – Базовые тактики отладки
  • 3.5 – Еще тактики отладки
  • 3.6 – Использование встроенного отладчика: пошаговое выполнение
  • 3.7 – Использование встроенного отладчика: запуск и точки останова
  • 3.8 – Использование встроенного отладчика: отслеживание переменных
  • 3.9 – Использование встроенного отладчика: стек вызовов
  • 3.10 – Поиск проблем до того, как они станут проблемами
  • 3.x – Резюме к главе 3 и небольшой тест
Глава 4 – Основные типы данных
  • 4.1 – Введение в основные типы данных
  • 4.2 — void
  • 4.3 – Размеры объектов и оператор sizeof
  • 4.4 – Целочисленные типы данных со знаком
  • 4.5 – Целочисленные типы данных без знака, и почему их следует избегать
  • 4.6 – Целочисленные типы фиксированной ширины и size_t
  • 4.7 – Введение в экспоненциальную запись
  • 4.8 – Числовые типы с плавающей точкой
  • 4.9 – Логические (булевы) значения
  • 4.10 – Знакомство с операторами if
  • 4.11 – Символы
  • 4.12 – Знакомство с std::string
  • 4.13 – Литералы
  • 4.14 – const, constexpr и символьные константы
  • 4.x – Резюме к главе 4 и небольшой тест
Глава 5 – Операторы
  • 5.1 – Приоритет и ассоциативность операторов
  • 5.2 – Арифметические операторы
  • 5.3 – Остаток от деления и возведение в степень
  • 5.4 – Операторы инкремента/декремента и их побочные эффекты
  • 5.5 – Оператор запятая и условный оператор
  • 5.6 – Операторы отношения и сравнение чисел с плавающей запятой
  • 5.7 – Логические операторы
  • 5.x – Резюме к главе 5 и небольшой тест
Глава O – Битовые манипуляции (необязательная глава)
  • O.1 – Битовые флаги и битовые манипуляции с помощью std::bitset
  • O.2 – Побитовые операторы
  • O.3 – Битовые манипуляции с побитовыми операторами и битовыми масками
  • O.4 – Преобразование между двоичной и десятичной системами счисления
Глава 6 – Область видимости объектов и преобразования
  • 6.1 – Составные инструкции (блоки)
  • 6.2 – Пользовательские пространства имен
  • 6.3 – Локальные переменные
  • 6.4 – Введение в глобальные переменные
  • 6.5 – Затенение переменных (скрытие имен)
  • 6.6 – Внутреннее связывание
  • 6.7 – Внешнее связывание
  • 6.8 – Глобальные константы и встраиваемые (inline) переменные
  • 6.9 – Почему глобальные переменные – это зло
  • 6.10 – Статические локальные переменные
  • 6.11 – Резюме об области видимости, продолжительности и связывании
  • 6.12 – Объявления using и директивы using
  • 6.13 – Безымянные и встраиваемые пространства имен
  • 6.x – Резюме к главе 6 и небольшой тест
Глава 7 – Порядок выполнения программы и обработка ошибок
  • 7.1 – Введение в порядок выполнения программы
  • 7.2 – Операторы if и блоки
  • 7.3 – Распространенные проблемы при работе с операторами if
  • 7.4 – Основы работы с оператором switch
  • 7.5 – Проваливание и область видимости в switch
  • 7.6 – Операторы goto
  • 7.7 – Введение в циклы и инструкции while
  • 7.8 – Инструкции do while
  • 7.9 – Инструкции for
  • 7.10 – Инструкции break и continue
  • 7.11 – Остановки (преждевременный выход из программы)
  • 7.12 – Введение в тестирование кода
  • 7.13 – Покрытие кода
  • 7.14 – Распространенные семантические ошибки при программировании на C++
  • 7.15 – Обнаружение и обработка ошибок
  • 7.16 – std::cin и обработка недопустимого ввода
  • 7.17 – assert и static_assert
  • 7.x – Резюме к главе 7 и небольшой тест
Глава 8 – Преобразование типов и перегрузка функций
  • 8.1 – Неявное преобразование (принуждение) типов данных
  • 8.2 – Продвижение целочисленных типов и типов с плавающей запятой
  • 8.3 – Числовые преобразования
  • 8.4 – Преобразования при вычислении арифметических выражений
  • 8.5 – Явное преобразование (приведение) типов данных и static_cast
  • 8.6 – typedef и псевдонимы типов
  • 8.7 – Вывод типов для объектов с использованием ключевого слова auto
  • 8.8 – Вывод типа для функций
  • 8.9 – Введение в перегрузку функций
  • 8.10 – Различение перегруженных функций
  • 8.11 – Разрешение перегрузки функций и неоднозначные совпадения
  • 8.12 – Аргументы по умолчанию
  • 8.13 – Шаблоны функций
  • 8.14 – Создание экземпляра шаблона функции
  • 8.15 – Шаблоны функций с несколькими шаблонными типами
  • 8.x – Резюме к главе 8 и небольшой тест
Глава 9 – Составные типы данных
  • 9.2 – Перечислимые типы данных
  • 9.3 – Классы перечислений
  • 9.4 – Структуры
  • 9.5 – Генерирование случайных чисел
  • 9.x – Резюме к главе 9 и небольшой тест
Глава 10 – Массивы, строки, указатели и ссылки
  • 10.1 – Массивы (часть 1)
  • 10.2– Массивы (часть 2)
  • 10.3 – Массивы и циклы
  • 10.4 – Сортировка массива с помощью сортировки выбором
  • 10.5 – Многомерные массивы
  • 10.6 – Строки в стиле C
  • 10.7 – Знакомство с std::string_view
  • 10.8 – Знакомство с указателями
  • 10.9 – Нулевые указатели
  • 10.10 – Указатели и массивы
  • 10.11 – Арифметика указателей и индексирование массивов
  • 10.12 – Строковые символьные константы в стиле C
  • 10.13 – Динамическое распределение памяти с помощью new и delete
  • 10.14 – Динамическое распределение памяти для массивов
  • 10.15 – Указатели и const
  • 10.16 – Переменные-ссылки
  • 10.17 – Ссылки и const
  • 10.18 – Выбор члена структуры/класса при работе с указателями и ссылками
  • 10.19 – Циклы for-each (циклы на основе диапазона)
  • 10.20 – Указатели void
  • 10.21 – Указатели на указатели и динамические многомерные массивы
  • 10.22 – Знакомство с std::array
  • 10.23 – Знакомство с std::vector
  • 10.24 – Знакомство с итераторами
  • 10.25 – Знакомство с алгоритмами стандартной библиотеки
  • 10.x – Резюме к главе 10 и небольшой тест
Глава 11 – Функции
  • 11.1 – Параметры и аргументы функций
  • 11.2 – Передача аргументов по значению
  • 11.3 – Передача аргументов по ссылке
  • 11.4 – Передача аргументов по адресу
  • 11.5 – Возвращение значений по значению, по ссылке и по адресу
  • 11.6 – Встраиваемые (inline) функции
  • 11.7 – Указатели на функции
  • 11.8 – Стек и куча
  • 11.9 – Емкость и стековое поведение std::vector
  • 11.10 – Рекурсия
  • 11.11 – Аргументы командной строки
  • 11.12 – Многоточия (и почему их следует избегать)
  • 11.13 – Введение в лямбды (анонимные функции)
  • 11.14 – Лямбда-захваты
  • 11.x – Резюме к главе 11 и небольшой тест
Глава 12 – Основы объектно-ориентированного программирования
  • 12.1 – Добро пожаловать в объектно-ориентированное программирование
  • 12.2 – Классы и члены классов
  • 12.3 – Спецификаторы доступа public и private
  • 12.4 – Функции доступа и инкапсуляция
  • 12.5 – Конструкторы
  • 12.6 – Списки инициализаторов членов в конструкторах
  • 12.7 – Инициализация нестатических членов класса
  • 12.8 – Перекрывающиеся и делегирующие конструкторы
  • 12.9 – Деструкторы
  • 12.10 – Скрытый указатель "this"
  • 12.11 – Файлы исходного кода и заголовочные файлы классов
  • 12.12 – Константные объекты классов и функции-члены
  • 12.13 – Статические переменные-члены
  • 12.14 – Статические функции-члены
  • 12.15 – Дружественные функции и классы
  • 12.16 – Анонимные объекты
  • 12.17 – Вложенные типы в классах
  • 12.18 – Определение времени выполнения кода
  • 12.x – Резюме к главе 12 и небольшой тест
Глава 13 – Перегрузка операторов
  • 13.1 – Введение в перегрузку операторов
  • 13.2 – Перегрузка арифметических операторов, используя дружественные функции
  • 13.3 – Перегрузка операторов, используя обычные функции
  • 13.4 – Перегрузка операторов ввода/вывода
  • 13.5 – Перегрузка операторов, используя функции-члены
  • 13.6 – Перегрузка унарных операторов +, - и !
  • 13.7 – Перегрузка операторов сравнения
  • 13.8 – Перегрузка операторов инкремента и декремента
  • 13.9 – Перегрузка оператора индекса
  • 13.10 – Перегрузка оператора круглые скобки ()
  • 13.11 – Перегрузка операторов преобразования типов данных
  • 13.12 – Конструктор копирования
  • 13.13 – Копирующая инициализация
  • 13.14 – Конструктор преобразования, explicit и delete
  • 13.15 – Перегрузка оператора присваивания
  • 13.16 – Поверхностное и глубокое копирование
  • 13.17 – Перегрузка операторов и шаблоны функций
  • 13.x – Резюме к главе 13 и небольшой тест
Глава 14 – Зарезервировано для будущей реорганизации
Глава 15 – Зарезервировано для будущей реорганизации
Глава 16 – Введение в связи между объектами
  • 16.1 – Связи между объектами
  • 16.2 – Композиция (агрегирование по значению)
  • 16.3 – Агрегация (агрегирование по ссылке)
  • 16.4 – Ассоциация
  • 16.5 – Зависимости
  • 16.6 – Контейнерные классы
  • 16.7 – Список инициализаторов std::initializer_list
  • 16.x – Резюме к главе 16 и небольшой тест
Глава 17 – Наследование
  • 17.1 – Введение в наследование
  • 17.2 – Основы наследования в C++
  • 17.3 – Порядок создания объектов производных классов
  • 17.4 – Конструкторы и инициализация производных классов
  • 17.5 – Наследование и спецификаторы доступа
  • 17.6 – Добавление функционала в производный класс
  • 17.7 – Вызов унаследованных функций и переопределение поведения
  • 17.8 – Скрытие унаследованной функциональности
  • 17.9 – Множественное наследование
  • 17.x – Резюме к главе 17 и небольшой тест
Глава 18 – Виртуальные функции
  • 18.1 – Указатели и ссылки базового класса на объекты производных классов
  • 18.2 – Виртуальные функции и полиморфизм
  • 18.3 – Спецификаторы override и final, и ковариантные возвращаемые типы
  • 18.4 – Виртуальные деструкторы, виртуальное присваивание и игнорирование виртуализации
  • 18.5 – Раннее и позднее связывание
  • 18.6 – Виртуальная таблица (таблица виртуальных функций)
  • 18.7 – Чисто виртуальные функции, абстрактные базовые классы и интерфейсные классы
  • 18.8 – Виртуальные базовые классы
  • 18.9 – Нарезка объектов
  • 18.10 – Динамическое приведение типов
  • 18.11 – Печать объектов классов, использующих наследование, с помощью operator<<
  • 18.x – Резюме к главе 18 и небольшой тест
Глава 19 – Шаблоны и классы
  • 19.1 – Шаблоны классов
  • 19.2 – Шаблонные параметры, не являющиеся типами данных
  • 19.3 – Специализация шаблона функции
  • 19.4 – Специализация шаблона класса
  • 19.5 – Частичная специализация шаблона
  • 19.6 – Частичная специализация шаблона для указателей
  • 19.x – Резюме к главе 19 и небольшой тест
Глава 20 – Исключения
  • 20.1 – Необходимость исключений
  • 20.2 – Основы обработки исключений
  • 20.3 – Исключения, функции и раскрутка стека
  • 20.4 – Неперехваченные исключения и универсальные обработчики
  • 20.5 – Исключения, классы и наследование
  • 20.6 – Повторное выбрасывание исключений
  • 20.7 – Функциональные блоки try
  • 20.8 – Опасности и недостатки исключений
  • 20.9 – Спецификации исключений и noexcept
  • 20.x – Резюме к главе 20 и небольшой тест
Глава M – Семантика перемещения и умные указатели
  • M.1 – Введение в умные указатели и семантику перемещения
  • M.2 – Ссылки на r-значения (rvalue-ссылки)
  • M.3 – Конструкторы перемещения и присваивание перемещением
  • M.4 – std::move
  • M.5 – std::move_if_noexcept
  • M.6 – std::unique_ptr
  • M.7 – std::shared_ptr
  • M.8 – Проблемы с круговой зависимостью с std::shared_ptr и умный указатель std::weak_ptr
  • M.x – Резюме к главе M и небольшой тест
Глава 21 – Стандартная библиотека шаблонов (STL)
  • 21.1 – Стандартная библиотека
  • 21.2 – Обзор контейнеров STL
  • 21.3 – Обзор итераторов STL
  • 21.4 – Обзор алгоритмов STL
Глава 22 – std::string
  • 22.1 – std::string и std::wstring
  • 22.2 – Создание и уничтожение std::string
  • 22.3 – Длина и емкость std::string
  • 22.4 – Доступ к символам std::string и преобразование в массивы в стиле C
  • 22.5 – Присваивание и обмен значениями для объектов std::string
  • 22.6 – Добавление данных к объектам std::string
  • 22.7 – Вставка данных в объекты std::string
Глава 23 – Ввод и вывод (I/O)
  • 23.1 – Потоки ввода и вывода (I/O)
  • 23.2 – Ввод данных с помощью istream
  • 23.3 – Вывод данных с помощью ostream и ios
  • 23.4 – Классы потоков для работы со строками
  • 23.5 – Состояния потока и проверка корректности входных данных
  • 23.6 – Основы файлового ввода/вывода
  • 23.7 – Произвольный файловый ввод/вывод
Приложение A – Разные темы
  • A.1 – Статические и динамические библиотеки
Приложение B – Обновления C++
  • B.1 – Введение в C++11
  • B.2 – Введение в C++14
  • B.3 – Введение в C++17
  • B.4 – Введение в C++20
Последние материалы
в разделеПрограммирование
  • Daily bit(e) C++. Ограничение noexcept
  • Daily bit(e) C++. std::make_unique_for_overwrite, std::make_shared_for_overwrite и std::allocate_shared_for_overwrite
  • Daily bit(e) C++. Объединение сортированных списков
  • Daily bit(e) C++. std::shared_mutex
  • Daily bit(e) C++. Лексикографическое сравнение с контейнерами
  • Daily bit(e) C++. std::invoke
  • Daily bit(e) C++. std::source_location
  • Daily bit(e) C++. std::priority_queue
  • Daily bit(e) C++. Объединение интервалов
  • Daily bit(e) C++. std::binary_semaphore
Последние материалы
в других разделах
  • Как в Git изменить файлы в старом (не последнем) коммите
  • Вопросы/ответы для подготовки к экзамену по охране труда. Обучение, проверка знаний, инструктажи
  • Вопросы/ответы для подготовки к экзамену по электробезопасности. Технические мероприятия
  • Вопросы/ответы для подготовки к экзамену по электробезопасности. Организация работ
  • 8.2 Настройка Git – Атрибуты Git
  • 8.1 Настройка Git – Конфигурация Git
  • 7.15 Инструменты Git – Заключение
  • 7.14 Инструменты Git – Хранилище учётных данных
  • 7.13 Инструменты Git – Замена
  • 7.12 Инструменты Git – Создание пакетов

Присоединяйтесь к нам во ВКонтакте!

Яндекс.Метрика
Радиоэлектроника
  • Антенны и распространение радиоволн
  • Беспроводная связь
  • Высокочастотная техника
  • Волоконно-оптические линии связи (ВОЛС)
  • Измерительная техника
  • Исполнительные механизмы и драйверы
  • САПР
  • Спутниковая связь
  • Схемотехника
  • Телевидение
  • Цифровая электроника
  • Технологии и инструменты
  • Электронные компоненты
  • А что внутри?
  • Прочее (радиоэлектроника)
Программирование
  • Алгоритмы и структуры данных
  • Базы данных
  • Веб-разработка
  • Мультимедиа (разработка ПО)
  • Нейронные сети
  • Паттерны проектирования
  • Связь
  • Системы сборки ПО
  • Языки программирования
IT
  • Компьютерные сети
  • Операционные системы
  • Верстка
  • Системы контроля версий
Прочее
  • История технологий
  • Мультимедиа
  • Новости телекома
  • Нормативная документация
  • Охрана труда
  • Полезные программы
  • Просто интересно
  • Экономика телекоммуникаций и электронной промышленности
  • Экономика и инвестиции
radioprog logo

Мы в соцсетях

         

Карта сайта

Последние материалы

Контакты: radioprog@gmail.com

© 2008 —2025 RadioProg.RU