Заметки по С++

Короткие заметки о языке C и C++: тонкости синтаксиса, поведение компилятора, подводные камни и любопытные детали стандарта. Формат «одна заметка — один вопрос», удобно читать и находить через поиск.

Заметки по языку с и с++

Заголовочные файлы и include guards/pragma once, проблема множественного включения

Введение Мы рассматривали include guard вкратце — в этой статье разберём подробно, почему он необходим, как именно проблема множественного включения проявляется без него, и сравним классический подход (#ifndef/#define/#endif)…

Заметки по языку с и с++

Шаблоны функций: основы обобщённого программирования

Введение До этого момента каждая функция в примерах цикла была написана для конкретного, фиксированного типа параметров — шаблоны позволяют написать одну функцию, работающую с произвольным типом, определяемым компилятором…

Заметки по языку с и с++

Реализация State Machine (конечного автомата) через QStateMachine

Введение Многие части интерфейса и бизнес-логики приложения естественно описываются как конечные автоматы: состояние подключения (отключён/подключается/подключён/ошибка), состояние формы (редактирование/сохранение/сохранено), плеер (воспроизведение/пауза/остановлен). Реализация такой логики через разрозненные булевы флаги и…

Заметки по языку с и с++

Готовый класс для работы с конфигурацией приложения (обертка над QSettings)

Введение QSettings предоставляет кросс-платформенный доступ к настройкам приложения (реестр Windows, .ini-файлы, plist на macOS), но прямое использование QSettings с обращением по строковым ключам по всему коду — источник…

Готовые методы реализаций

Реализация Event Bus / шины событий на сигналах Qt для слабосвязанных модулей

Введение В крупных приложениях с множеством модулей прямая связь между ними через сигналы/слоты (где каждый модуль явно знает о существовании и интерфейсе другого) постепенно создаёт плотный граф зависимостей,…

Заметки по языку с и с++

Inline-переменные и одноопределимое правило (ODR) в современном C++

Введение One Definition Rule (ODR, «правило одного определения») — одно из фундаментальных, но часто неочевидных правил C++: любая сущность (функция, переменная, класс, шаблон) должна иметь ровно одно определение…

Заметки по языку с и с++

Правило пяти (Rule of Five) в C++: конструкторы копирования/перемещения на практике

Введение «Правило пяти» (Rule of Five) — современная версия классического «правила трёх» (Rule of Three) из C++98, расширенная в C++11 семантикой перемещения. Если ваш класс самостоятельно управляет каким-либо…