Какие приложения вы разрабатывали на C++?

«Какие приложения вы разрабатывали на C++?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я создавал проекты на 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):** для пошаговой отладки.