Коллекция примеров и упражнений по программированию на C++ из курса МФТИ.
Проект организован по темам и содержит примеры кода с комментариями на русском языке:
- 1_1.cpp - Базовые команды компиляции и выполнения программ
- 1_2.cpp - Типы данных и их операции (vector, string)
- 1_3.cpp - Основные типы данных
- 1_3_types.cpp - Дополнительные примеры типов
- 1_4.cpp - Условные операторы и циклы
- 1_5.cpp - Функции
- 1_6_*.cpp - Ошибки компиляции и неопределенное поведение
- 2_1_*.cpp - Указатели и работа с памятью
- 2_2_*.cpp - Виды памяти (стек, куча) и утечки памяти
- 2_3_*.cpp - Массивы и строки в стиле C
- 2_4_*.cpp - Указатели на функции
- 2_5_*.cpp - Ссылки
- 2_6_*.cpp - Константность
- 2_7_*.cpp - Приведения типов
- 3_1_*.cpp - Классы и структуры, инкапсуляция
- 3_2_*.cpp - Приватные члены и перегрузка
- 3_3_*.cpp - Конструкторы и деструкторы
- 3_4_*.cpp - Правило трех
- 3_5_*.cpp - Константные и статические члены
- 3_6_*.cpp - Перегрузка операторов
- 3_7_*.cpp - Указатели на члены класса
- 3_8_*.cpp - Перечисления (enum)
- 4_1_*.cpp - Публичное, приватное и защищенное наследование
- 4_2_*.cpp - Видимость членов при наследовании
- 4_3_*.cpp - Размещение в памяти при наследовании
- 4_4_*.cpp - Приведения типов при наследовании
- 4_5_*.cpp - Множественное наследование
- 4_6_*.cpp - Виртуальное наследование
- 5_1_*.cpp - Виртуальные функции
- 5_2_*.cpp - Примеры использования виртуальных функций
- 5_3_*.cpp - Абстрактные классы
- 5_4_*.cpp - Динамическое приведение типов (dynamic_cast)
- 5_7_*.cpp - Проблемы с виртуальными функциями
- 6_1_*.cpp - Основы шаблонов
- 6_2_*.cpp - Перегрузка шаблонов
- 6_3_*.cpp - Специализация шаблонов
- 6_4_*.cpp - Non-type template parameters
- 6_5_*.cpp - Вычисления на этапе компиляции
- binary_search.cpp - Реализация бинарного поиска
- merge_sort.cpp - Алгоритм сортировки слиянием
- quick_sort.cpp - Быстрая сортировка
- class_vector.cpp - Реализация класса vector
- matrix.cpp - Работа с матрицами
- shapes.cpp - Примеры с геометрическими фигурами
- testing.cpp - Примеры тестирования
- inheritance_training.cpp - Дополнительные упражнения по наследованию
- virtual_inheritance.cpp - Расширенные примеры виртуального наследования
- compilers.cpp - Информация о компиляторах
Для компиляции используйте g++:
# Компиляция одного файла
g++ -o output_name source_file.cpp
# Компиляция с отладочной информацией
g++ -g -o output_name source_file.cpp
# Компиляция с оптимизацией
g++ -O2 -o output_name source_file.cpp
# Запуск
./output_name- Все примеры содержат комментарии
- Код демонстрирует различные аспекты C++ от базовых до продвинутых
- Включены примеры как правильного, так и неправильного использования языка
- Рассматриваются типичные ошибки и способы их избежания
- Компилятор C++ с поддержкой стандарта C++11 или выше
- Операционная система Linux/Unix (примеры команд в комментариях ориентированы на Linux)
Большинство файлов содержат:
- Описание темы в начале файла
- Комментарии к ключевым моментам кода
- Примеры ошибок компиляции (CE - Compilation Error)
- Примеры неопределенного поведения (UB - Undefined Behavior)
- Объяснения особенностей языка C++