- Глобальные переменные в глобальном пространстве имён
- Определение вложенных пространств имён
- Безымянные пространства имен внутри именованных
- Время существования переменных
- Инициализация статической переменной в локальной области видимости происходит лишь однажды
- Написание оператора разрешения области видимости ::
- Переопределение операторов new и delete для отслеживания аллокаций
- Жизненный цикл переменных в условии if
- std::wcout, std::wcerr, std::wcin
- std::ofstream никогда не создает папки
- Создание каталога с помощью функции mkdir() из библиотеки C POSIX
- Копирование папки
- Размеры фундаментальных типов данных
- Upcasting знаковых целых и их битовое представление
- Бинарное представление char, unsigned char, short и unsigned short
- Побитовое «ИЛИ» с bool
- Присваивание ULONG_MAX float-переменной и обратно
- Присваивание
true
/false
int-переменной
- Присвоение экземпляру std::string массива char
- Сравнение std::string и литеральной строки
- Преобразование std::string к float и обратно
- Преобразование std::string в std::wstring и обратно
- Создание разделяемых указателей через конструктор или std::make_shared
- Константные указатели и ссылки
- Освобождение памяти через delete[] для указателя const char* const
- Передача указателей в функцию
- Проверка shared_ptr на пустоту
- Присваивание указателя переменной типа auto &
- Указатель на шаблонную функцию
- Присваивание и возврат ссылок
- Const-ссылка на временный объект - life time временного объекта продлевается до времени жизни ссылки
- Scoped и un-scoped перечисления с указанием нижележащего интегрального (целочисленного) типа
- Передача перечисления в функцию
- Использование элементов перечисления в качестве флагов для битовой маски
- Преобразование enum в строку и обратно
- Передача массива enum-значений в функцию
- Анонимное объединение внутри структуры с отслеживанием активного элемента
- Передача объединения в функцию
- Объединение указателей
- Определение stream insertion оператора “<<” для объединения
- Особенности использования переменных из member initializer list для инициализации других переменных
- Возврат экземпляра приватного класса
- Присваивание не вызывает конструктор копирования или деструктор
- Конструктор преобразования
- Инициализация данных и суперклассов
- Делегирующий конструктор
- Конструкторы копирования/перемещения и операторы присваивания копированием/перемещением
- Не вызывается конструктор копирования из-за return value optimization
- Порядок инициализации членов класса
- auto переменная не означает ссылку если ей присвоить ссылку
- Деструкторы
- Можно ли использовать override для виртуального деструктора? Да.
- При выходе из скопа для ссылки деструктор не вызывается
- Можно ли использовать override для невиртуальных методов? Нет.
- Виртуальное и невиртуальное наследование в сравнении
- Перекрытие виртуального метода в производном классе методом с аргументом по умолчанию, что вызывает [-Woverloaded-virtual]
- Переопределение уже определенного в суперклассе виртуального метода
- Аргументы по умолчанию в виртуальных функциях
- Переопределение в производном классе возвращаемого типа производным типом
- Последнее переопределение виртуального метода будет вызываться на всех уровнях иерархии
- dynamic_cast не может привести к результирующему типу если начальный тип не является потомком результирующего и не имеет с ним общего предка
- dynamic_cast и виртуальное наследование
- Ковариантный возвращаемый тип виртуальной функции
- Изменение модификатора доступа унаследованного метода
- Будут ли перегружены от разных предков методы с одинаковыми именами и параметрами в наследнике? (по умолчанию нет)
dynamic_cast
от одного родительского класса к другому
- Research по статическим интерфейсам в C++
- Пример имитации интерфейса IWriteData абстрактным классом
- Декларация интерфейсов в C++
- Способы декларировать интерфейс в C++11
- Пример интерфейса автомобиля с использованием динамического полиморфизма и ключевого слова struct
- Пример интерфейса генерации числа с использованием динамического полиморфизма и ключевого слова class
- Имплементация метода прямо в интерфейсе
- Сравнение наследования интерфейса в Java и С++
- Виртуальный вариативный метод
- Перегрузка метода с std::shared_ptr-параметром
- Текучий интерфейс
- Значения по умолчанию для параметров виртуальных методов
- Указатели и константность по данным и адресу
- Вектор указателей со спецификаторами константности
- Два метода класса с одинаковыми именами, но один из них константный
- Удаление константности с типа
- Взятие адреса
mutable
поля класса
- Объявление и определение функции в разных местах
- Декларация и дефиниция inline-функций в пространстве имён
- Декларация и дефиниция inline-функций в классе
- Лямбда-выражения
- Передача статического массива указателей в функцию
- Проверка
std::function
на пустоту
- Захват parameter pack в лямбда-функцию
- При захвате this, переменные экземпляра класса не копируются
- Перегрузка функций с лямбда-функцией в качестве аргумента
- Реализация функций с переменным числом аргументов через вариативные шаблоны
- Передача перегруженной шаблонной функции в другую функцию с помощью вспомогательной структуры
- Специализация шаблонных функций
- Шаблонизация возвращаемого значения
- Передача геттера в шаблонную функцию аргументом функции или параметром шаблона
- Передача лямбды в метод класса параметром шаблона
- Передача статической функции в шаблонную функцию параметром шаблона
- Передача нескольких типов в вариативную шаблонную функцию и обработка каждого типа внутри лямбды
- Пример шаблона класса для выполнения простых арифметических операций
- Раздельная декларация и дефиниция шаблона класса
- Частичная специализация шаблонных методов класса
- Декларация и дефиниция явного инстанцирования шаблонов
- Шаблон класса параметрированный геттером массива
- Вызов у переданного указателя заданного метода с заданными аргументами
- override метода предка переданного аргументом в шаблонный класс
- Специализация шаблонного метода в .cpp файле
- Реализация функции печати с переменным числом аргументов с помощью выражения свертки
- Передача переменного количества классов в функцию и их обработка с помощью выражений свертки
- Множественное определение stand-alone функции в исходных файлах
- Множественное определение переменной в исходных файлах
- Перекрытие лямбда-параметром захваченной переменной
- Шаблонные методы не могут быть виртуальными
- Вставка элемента в std::vector в заданную позицию
- Упорядоченная вставка объектов с компаратором в вектор
- Как работает std::distance
- Как работает erase
- std::unordered_map при своём разрушении не вызывает деструктор для значений хранящихся по указателю
- Изменение значений в словаре путём операций на итератором
- Метод insert у std::unordered_map не обновляет существующее значение
- Словарь из словарей со значением из класса по значению
- Словарь с ключом типа int и значением типа множество строк
- Получение значения по ссылке из std::unordered_map
- Обход словаря состоящего из словарей
- Нельзя создать словарь со значением типа ссылки
- Применение std::max_element к std::map
- Использование указателя на класс как ключа для std::unordered_map
- std::pair в качестве ключа для словаря
- Удаление из std::map
- Использование умного указателя в качестве ключа для словаря
- Что будет если применить std::advance к std::unordered_set
- Изменение ключа у элемента множества не приводит к изменению порядка элемента
- std::any как параметр функции и передача в него значения с автоматическим преобразованием
- Контейнер свойств на основе std::any
- Сравнение shared_ptr
- Простейшая реализация shared_from_this функциональности
- Приведение типов умных указателей
- Сброс std::shared_ptr
- Удаление элемента из std::vector<std::shared_ptr<…>>
- std::shared_ptr не вызывающий деструктор
- Различия в создании shared_ptr через конструктор и make_shared
- Возврат std::shared_ptr как std::shared_ptr
- Как работают методы expired() и lock() у std::weak_ptr
- Автоматическая инвалидация std::weak_ptr при выходе из области видимости
- Как работает weak_from_this()
- Приведение типа пустого std::weak_ptr
- Получение ID потока и сон (sleep) в потоке
- Использование std::async и std::future
- std::condition_variable проверяет условие ожидания при запуске и при вызове notify
- Примеры имплементации простого кэширования на уровне классов
- Сколько времени занимает выполнение циклов