Синтаксис си/с++

Синтаксис C и C++ по полочкам: указатели, ссылки, память, типы, шаблоны и современные возможности стандарта. Системный разбор основ языка с примерами — полезно и новичкам, и тем, кто хочет закрыть пробелы.

Синтаксис си/с++

Препроцессор: #define, макросы, условная компиляция

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

Синтаксис си/с++

Умные указатели: unique_ptr, shared_ptr, weak_ptr

Введение Мы разбирали ручное управление динамической памятью через new/delete, систематически разберёт RAII как общую философию — умные указатели представляют практическое, готовое к использованию воплощение RAII конкретно для управления…

Синтаксис си/с++

Move-семантика: rvalue-ссылки, std::move, move-конструкторы

Введение До этой статьи все примеры с копированием объектов (про конструктор копирования концептуально) предполагали полное, «глубокое» копирование данных — move-семантика (C++11) предоставляет альтернативу: эффективную «передачу» внутренних ресурсов объекта…

Синтаксис си/с++

Лямбда-выражения: захват переменных, типы захвата

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

Синтаксис си/с++

auto и decltype: вывод типов в современном C++

Введение Все предыдущие примеры явно указывали тип каждой переменной — современный C++ (начиная с C++11) предоставляет auto для автоматического вывода типа переменной из её инициализатора, и decltype для…

Синтаксис си/с++

Специализация шаблонов: полная и частичная

Введение Ранее мы рассматривали единый, обобщённый шаблон, одинаково обрабатывающий любой тип — иногда нужна особая, отличающаяся реализация для конкретного типа (или ограниченного семейства типов) — специализация шаблонов решает…

Синтаксис си/с++

Шаблоны классов: контейнеры и обобщённые структуры

Введение Ранее разбирали шаблоны функций — шаблоны классов применяют ту же идею обобщённого программирования к целым классам, что и лежит в основе всех стандартных контейнеров библиотеки (std::vector<T>, std::map<K,…

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

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

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