Короткие заметки о языке C и C++: тонкости синтаксиса, поведение компилятора, подводные камни и любопытные детали стандарта. Формат «одна заметка — один вопрос», удобно читать и находить через поиск.
Умные указатели в Qt-коде: когда QSharedPointer, а когда std::shared_ptr
Введение В проектах на Qt разработчик неизбежно сталкивается с выбором: использовать собственные умные указатели Qt (QSharedPointer, QScopedPointer, QPointer) или указатели стандартной библиотеки (std::shared_ptr, std::unique_ptr, std::weak_ptr). Исторически Qt появился…
constexpr и compile-time вычисления в современном C++
Введение Современный C++ позволяет переносить часть вычислений с этапа выполнения программы на этап компиляции. Это не просто оптимизация скорости — это способ обнаруживать ошибки раньше, генерировать таблицы и…
RAII в C++: как избежать утечек ресурсов без сборщика мусора
Введение C++ не имеет сборщика мусора, и многие новички видят в этом источник опасности: «как же я не забуду освободить память или закрыть файл?». Ответ языка на этот…
QProcess: запуск внешних программ и обмен данными через stdin/stdout
Введение Многие приложения должны взаимодействовать с внешними программами: запускать утилиты командной строки, конвертеры, компиляторы, скрипты. В Qt для этого есть класс QProcess, который запускает внешний процесс и предоставляет…
Потокобезопасные структуры данных в Qt-приложениях: паттерны и ошибки
Введение При переходе от однопоточного кода к многопоточному самая частая ошибка — продолжать использовать обычные контейнеры (QVector, QList, QMap, std::vector) из нескольких потоков без какой-либо синхронизации, считая их…
Модульное, интеграционное и системное тестирование в C++
Тестирование — критически важная часть разработки программного обеспечения, особенно в C++, где ручное управление памятью и сложные абстракции могут приводить к трудноуловимым ошибкам. В этой статье мы рассмотрим…
Подключение популярных фреймворков тестирования к Qt-проекту
Qt поддерживает встроенное тестирование через QTest, но при разработке на C++ часто возникает необходимость использовать внешние фреймворки: Google Test, Catch2, Doctest, Boost.Test. В этой статье сравниваются и описываются…
Умные указатели в C++: unique_ptr, shared_ptr, weak_ptr
Умные указатели (smart pointers) — это объекты-обертки для «сырых» указателей (raw pointers), которые автоматически управляют временем жизни динамически выделенной памяти. Они были введены в стандарт C++11 для решения…