Ответ
Я создавал проекты на C++ разного масштаба, что позволило изучить различные аспекты языка и экосистемы.
1. Консольный файловый менеджер
- Цель: Освоение работы с файловой системой и потоками ввода-вывода (I/O).
- Функционал: Базовые операции (копирование, перемещение, удаление, просмотр файлов и каталогов).
- Технологии: Стандартная библиотека (
<fstream>,<filesystem>(C++17),<iostream>). - Пример кода:
#include <filesystem> namespace fs = std::filesystem;
void copyFile(const fs::path& source, const fs::path& destination) { try { fs::copy_file(source, destination, fs::copy_options::overwrite_existing); std::cout << "File copied successfully.n"; } catch (const fs::filesystem_error& e) { std::cerr << "Error copying file: " << e.what() << 'n'; } }
**2. Многопоточный TCP-сервер**
* **Цель:** Изучение сетевого программирования и асинхронных операций.
* **Функционал:** Обработка одновременных подключений от нескольких клиентов, простой обмен сообщениями.
* **Технологии:** Библиотека **Boost.Asio** для асинхронного ввода-вывода.
**3. Десктопное приложение с GUI для анализа логов**
* **Цель:** Создание кроссплатформенного приложения с графическим интерфейсом.
* **Функционал:** Загрузка лог-файлов, фильтрация по уровню (Error, Warning, Info), построение простых графиков статистики.
* **Технологии:** Фреймворк **Qt** (виджеты, сигналы/слоты, QCharts).
**4. Простая 2D-игра**
* **Цель:** Практика в области геймдева, работа с графикой и физикой.
* **Жанр:** Платформер.
* **Функционал:** Управление персонажем, обнаружение коллизий, анимация.
* **Технологии:** Мультимедийная библиотека **SFML** (Simple and Fast Multimedia Library).
**Инструменты тестирования и отладки:**
* **Google Test (GTest):** для модульного тестирования.
* **Valgrind / AddressSanitizer:** для обнаружения утечек памяти и ошибок работы с ней.
* **GDB (GNU Debugger):** для пошаговой отладки.