В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Преобразование Derived* в Base* недоступно внешнему коду при protected-наследовании, но разрешено внутри Derived. Можно явно предоставить фабрику, возвращающую владение через базовый интерфейс.
Используйте min-heap из текущих голов непустых списков. Извлекайте минимальный узел, присоединяйте к результату и добавляйте в кучу его следующий узел.
Кроме лишней скобки и пропущенной точки с запятой, в иерархии две копии RawHardDisk. Виртуальное наследование от общего предка устраняет неоднозначность disk.attach().
Определённого вывода нет: DerivedClass удаляется через BaseClass* с невиртуальным деструктором. Это неопределённое поведение, а не гарантированный вызов только ~BaseClass.
Используйте ORDER BY quantity DESC для убывания и ORDER BY quantity ASC для возрастания. Дополнительный id задаёт устойчивый порядок строк с одинаковым количеством.
В исходном примере constexpr result уже требует константного вычисления. Если нужно запретить обычные runtime-вызовы самой функции, в C++20 используется consteval.
Разберите выражение рекурсивно: число возвращает своё значение, а скобочная форма содержит оператор и список вложенных выражений. После разбора нужно проверить закрывающие скобки и отсутствие лишних токенов.
Главные ошибки — удаление B через A без виртуального деструктора и утечка _multiplier при исключении в конструкторе B. Поэтому у всей исходной программы нет гарантированного полного вывода.