Уроки С++
Язык C++ (произносится как «Си плюс плюс») был разработан Бьёрном Страуструпом в подразделении Bell Labs компании AT&T в качестве дополнения к языку Cи. С++ добавил множество новых возможностей в язык Си. Его популярность была вызвана объектно-ориентированностью языка. Сейчас C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. С его помощью создают операционные системы, разнообразные прикладные программы, драйверы устройств, игры и пр.
Среди самого популярного программного обеспечения, написанного на C++ (или с его использованием), находятся СУБД MySQL, интернет-браузер Mozilla Firefox, большая часть программного обеспечения от Microsoft: операционные системы семейства Windows, IDE Visual Studio, Internet Explorer, Microsoft Office. Adobe Photoshop, Adobe Illustrator и Adobe Premiere Pro целиком написаны на C++. Также данный язык лежит в основе игрового движка Unity.
Здесь представлены более 240 бесплатных уроков, где с нуля рассматриваются основы и тонкости языка С++ и программирования в целом. Есть пошаговые создания игр на С++ с помощью библиотек MFC и SFML, и более 70 практических заданий для проверки ваших навыков программирования.
Глава №0. Введение. Начало работы
Урок №1. Введение в программирование
Урок №2. Введение в языки программирования C и С++
Урок №3. Введение в разработку программного обеспечения
Урок №4. Установка IDE (Интегрированной Среды Разработки)
Урок №5. Компиляция вашей первой программы
Глава №1. Основы C++
Урок №10. Переменные, Инициализация и Присваивание
Урок №13. Параметры и аргументы функций
Урок №14. Почему функции — полезны, и как их эффективно использовать?
Урок №15. Локальная область видимости
Урок №16. Ключевые слова и идентификаторы
Урок №18. Базовое форматирование кода
Урок №19. Прототип функции и Предварительное объявление
Урок №20. Многофайловые программы
Урок №22. Директивы препроцессора
Урок №23. Header guards и #pragma once
Урок №24. Конфликт имен и std namespace
Урок №25. Разработка ваших первых программ
Урок №26. Отладка программ: степпинг и точки останова
Урок №27. Отладка программ: стек вызовов и отслеживание переменных
Глава №2. Переменные и основные типы данных в C++
Урок №28. Инициализация, присваивание и объявление переменных
Урок №31. Целочисленные типы данных: short, int и long
Урок №32. Фиксированный размер целочисленных типов данных
Урок №33. Типы данных с плавающей точкой: float, double и long double
Урок №34. Логический тип данных bool
Урок №35. Символьный тип данных char
Урок №36. Литералы и магические числа
Глава №3. Операторы в C++
Урок №38. Приоритет операций и правила ассоциативности
Урок №39. Арифметические операторы
Урок №40. Инкремент, декремент и побочные эффекты
Урок №41. Условный тернарный оператор, оператор sizeof и Запятая
Урок №43. Логические операторы: И, ИЛИ, НЕ
Урок №44. Конвертация чисел из двоичной системы в десятичную и наоборот
Глава №4. Область видимости и другие типы переменных в C++
Урок №47. Блоки стейтментов (составные операторы)
Урок №48. Локальные переменные, область видимости и продолжительность жизни
Урок №49. Глобальные переменные
Урок №50. Почему глобальные переменные – зло?
Урок №51. Статические переменные
Урок №52. Связи, область видимости и продолжительность жизни переменных
Урок №55. Неявное преобразование типов данных
Урок №56. Явное преобразование типов данных
Урок №57. Строки (std::string)
Урок №60. Псевдонимы типов: typedef и type alias
Глава №5. Порядок выполнения кода в программе. Циклы, ветвления в C++
Урок №63. Операторы управления потоком выполнения программ
Урок №64. Операторы условного ветвления if/else
Урок №70. Операторы break и continue
Урок №71. Генерация случайных чисел
Урок №72. Обработка некорректного пользовательского ввода
Глава №6. Массивы, Строки, Указатели и Ссылки в C++
Урок №75. Фиксированные массивы
Урок №77. Сортировка массивов методом выбора
Урок №83. Адресная арифметика и индексация массивов
Урок №84. Символьные константы строк C-style
Урок №85. Динамическое выделение памяти
Урок №86. Динамические массивы
Урок №90. Оператор доступа к членам через указатель
Урок №93. Указатели на указатели
Урок №94. Введение в std::array
Глава №7. Функции в C++
Урок №96. Параметры и аргументы функций
Урок №97. Передача по значению
Урок №100. Возврат значений по ссылке, по адресу и по значению
Урок №103. Параметры по умолчанию
Урок №104. Указатели на функции
Урок №107. Рекурсия и Числа Фибоначчи
Урок №108. Обработка ошибок, cerr и exit()
Урок №109. assert и static_assert
Глава №8. Основы ООП в C++
Урок №113. Классы, Объекты и Методы
Урок №114. Спецификаторы доступа public и private
Урок №115. Инкапсуляция, Геттеры и Сеттеры
Урок №117. Список инициализации членов класса
Урок №118. Инициализация нестатических членов класса
Урок №119. Делегирующие конструкторы
Урок №121. Скрытый указатель *this
Урок №122. Классы и заголовочные файлы
Урок №124. Статические переменные-члены класса
Урок №125. Статические методы класса
Урок №126. Дружественные функции и классы
Урок №128. Вложенные типы данных в классах
Глава №9. Перегрузка операторов в C++
Урок №130. Введение в перегрузку операторов
Урок №131. Перегрузка операторов через дружественные функции
Урок №132. Перегрузка операторов через обычные функции
Урок №133. Перегрузка операторов ввода и вывода
Урок №134. Перегрузка операторов через методы класса
Урок №135. Перегрузка унарных операторов +, — и логического НЕ
Урок №136. Перегрузка операторов сравнения
Урок №137. Перегрузка операторов инкремента и декремента
Урок №138. Перегрузка оператора индексации []
Урок №139. Перегрузка оператора ()
Урок №140. Перегрузка операций преобразования типов данных
Урок №141. Конструктор копирования
Урок №142. Копирующая инициализация
Урок №143. Конструкторы преобразования, ключевые слова explicit и delete
Урок №144. Перегрузка оператора присваивания
Глава №10. Введение в связи между объектами в C++
Урок №146. Типы связей между объектами
Урок №147. Композиция объектов
Урок №151. Контейнерные классы
Глава №11. Наследование в C++
Урок №153. Введение в Наследование
Урок №154. Базовое наследование
Урок №155. Порядок построения дочерних классов
Урок №156. Конструкторы и инициализация дочерних классов
Урок №157. Наследование и спецификатор доступа protected
Урок №158. Добавление нового функционала в дочерний класс
Урок №159. Переопределение методов родительского класса
Урок №160. Сокрытие методов родительского класса
Глава №12. Виртуальные функции в C++
Урок №162. Указатели, Ссылки и Наследование
Урок №163. Виртуальные функции и Полиморфизм
Урок №164. Модификаторы override и final
Урок №165. Виртуальные деструкторы и Виртуальное присваивание
Урок №166. Раннее и Позднее Связывания
Урок №167. Виртуальные таблицы
Урок №168. Чистые виртуальные функции, Интерфейсы и Абстрактные классы
Урок №169. Виртуальный базовый класс
Урок №171. Динамическое приведение типов. Оператор dynamic_cast
Глава №13. Шаблоны в C++
Урок №174. Экземпляры шаблонов функций
Урок №176. Параметр non-type в шаблоне
Урок №177. Явная специализация шаблона функции
Урок №178. Явная специализация шаблона класса
Урок №179. Частичная специализация шаблона
Глава №14. Исключения в C++
Урок №181. Исключения. Зачем они нужны?
Урок №182. Обработка исключений. Операторы throw, try и catch
Урок №183. Исключения, Функции и Раскручивание стека
Урок №184. Непойманные исключения и обработчики catch-all
Урок №185. Классы-Исключения и Наследование
Урок №186. Повторная генерация исключений
Урок №187. Функциональный try-блок
Глава №15. Умные указатели и Семантика перемещения в C++
Урок №189. Умные указатели и Семантика перемещения
Урок №191. Конструктор перемещения и Оператор присваивания перемещением
Урок №192. Функция std::move()
Урок №193. Умный указатель std::unique_ptr
Урок №194. Умный указатель std::shared_ptr
Глава №16. Стандартная библиотека шаблонов (STL) в С++
Глава №17. std::string в С++
Урок №200. Строковые классы std::string и std::wstring
Урок №201. Создание, уничтожение и конвертация std::string
Урок №202. Длина и ёмкость std::string
Урок №203. Доступ к символам std::string. Конвертация std::string в строки C-style
Урок №204. Присваивание и перестановка значений с std::string
Глава №18. Ввод/Вывод в С++
Урок №207. Потоки ввода и вывода
Урок №208. Функционал класса istream
Урок №209. Функционал классов ostream и ios. Форматирование вывода
Урок №210. Потоковые классы и Строки
Урок №211. Состояния потока и валидация пользовательского ввода
Дополнительные уроки
Конфигурация компилятора: Расширения компилятора
Конфигурация компилятора: Уровни предупреждений и ошибки
Конфигурация компилятора: Выбор стандарта языка С++
Введение в класс std::string_view в С++
Алгоритмы в Стандартной библиотеке С++
Статические и динамические библиотеки
Подключение и использование библиотек в Visual Studio
Спецификации исключений и спецификатор noexcept в С++
Функция std::move_if_noexcept() в С++
Оператор трехстороннего сравнения в С++
Финал
*Адаптированный перевод с LearnCpp.com
**Украинский перевод на aCode / Уроки по С++
Пошаговое создание игры на С++/MFC
Урок №1: Введение в создание игры «SameGame» на C++/MFC
Урок №2: Архитектура и хранение данных в игре «SameGame» на C++/MFC
Урок №3: Отрисовка игры «SameGame» на C++/MFC
Урок №4: Обработка событий в игре «SameGame» на C++/MFC
Урок №5: Работа с алгоритмом в игре «SameGame» на C++/MFC
Урок №6: Работа с меню в игре «SameGame» на C++/MFC
Урок №7: Добавление уровней сложности в игре «SameGame» на C++/MFC
Урок №8: Размеры и количество блоков в игре «SameGame» на C++/MFC
Урок №9: Финальные штрихи в создании игры «SameGame» на C++/MFC
Примечание: Отдельное спасибо Дмитрию Бушуеву за помощь в переводе с cprogramming.com.
Практические задания по С++
Часть №1: Практические задания по С++
Часть №2: Практические задания по С++
Часть №3: Практические задания по С++
Часть №4: Практические задания по С++
Часть №5: Практические задания по С++
Часть №6: Практические задания по С++
Часть №7: Практические задания по С++
Часть №8: Практические задания по С++
Часть №9: Практические задания по С++
Часть №10: Практические задания по С++
Часть №11: Практические задания по С++
Часть №12: Практические задания по С++
Часть №13: Практические задания по С++
Часть №14: Практические задания по С++
Часть №15: Практические задания по С++
Часть №16: Практические задания по С++
Часть №17: Практические задания по С++
Часть №18: Практические задания по С++
Часть №19: Практические задания по С++
Часть №20: Практические задания по С++
Часть №21: Практические задания по С++
Часть №22: Практические задания по С++
Уроки по графической библиотеке SFML
Что такое SFML? Установка SFML в C++
Создание простых геометрических фигур в C++/SFML
Часть №1: Создание игры «Тетрис» на С++/SFML
Часть №2: Создание игры «Тетрис» на С++/SFML
Часть №3: Создание игры «Тетрис» на С++/SFML
Примечание: Это авторские уроки Дмитрия Бушуева!