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
      Последние материалы
      в разделе Программирование
      • Руководство CMake. Шаг 1. Базовая отправная точка
      • Руководство CMake. Введение
      • Пример редактируемой древовидной модели в проекте с Qt
      • Пример простой древовидной модели в проекте с Qt
      • Сборка проектов из командной строки
      • Сборка повторно используемого QML-модуля
      • Сборка QML-приложения с помощью CMake
      • Начало работы с CMake в Qt-проектах
      • Использование пользовательских удалителей (deleter) с shared_ptr и unique_ptr в C++
      • Краткая справка по умным указателям в C++
      Последние материалы
      в других разделах
      • Вопросы/ответы для подготовки к экзамену по охране труда. Обучение, проверка знаний, инструктажи
      • Вопросы/ответы для подготовки к экзамену по электробезопасности. Технические мероприятия
      • Вопросы/ответы для подготовки к экзамену по электробезопасности. Организация работ
      • 8.2 Настройка Git – Атрибуты Git
      • 8.1 Настройка Git – Конфигурация Git
      • 7.15 Инструменты Git – Заключение
      • 7.14 Инструменты Git – Хранилище учётных данных
      • 7.13 Инструменты Git – Замена
      • 7.12 Инструменты Git – Создание пакетов
      • 7.11 Инструменты Git – Подмодули

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

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

      Мы в соцсетях

               

      Карта сайта

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

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

      © 2008 — 2023 RadioProg.RU