Создание собственного деструктора в классе
Деструктор объявляют как ~MyClass() без параметров и возвращаемого типа. Он вызывается при завершении времени жизни объекта и должен безопасно освобождать принадлежащие объекту ресурсы.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Деструктор объявляют как ~MyClass() без параметров и возвращаемого типа. Он вызывается при завершении времени жизни объекта и должен безопасно освобождать принадлежащие объекту ресурсы.
Читать ответПрограмма напечатает пять строк: Base, Derived, Derived, Derived, Base. Во время конструкции и разрушения виртуальный вызов ограничен текущим конструируемым или разрушаемым классом.
Читать ответОдин проход хранит длину текущей серии и максимальную длину. При другом значении текущий счётчик сбрасывается; для пустого массива или отсутствующего target ответ равен нулю.
Читать ответПри исходных стандартных настройках cout получится a*b. Манипулятор hex переключает вывод целых чисел в шестнадцатеричную систему и действует на оба числа.
Читать ответВывод по строкам: A(), B(), PrintB, ~B(), ~A(). Привязка временного B к локальной const A& продлевает жизнь всего временного объекта до конца области видимости ссылки.
Читать ответКатегории значений относятся к выражениям, а не к объявлениям целиком. a и b — lvalue; a + b, a + 1 и &a — prvalue. Разыменование корректного указателя даёт lvalue.
Читать ответНовый общий счётчик надо увеличить до освобождения прежнего владения. Нельзя просто вызвать деструктор текущего объекта и продолжить пользоваться его полями: это завершает время жизни объекта.
Читать ответВсе отмеченные объявления допустимы: ptr разыменовывается уже после new. Основная ошибка — утечка выделенного int, поскольку перед выходом нет delete.
Читать ответХраните отдельно буфер, size и capacity. emplace_back конструирует объект в сырой памяти, push_back делегирует ему копирование, pop_back разрушает последний объект, не уменьшая ёмкость.
Читать ответПроблема в накоплении погрешности double: шаг 0.2 не представляется точно, поэтому сравнение val == 2.0 ненадёжно. Счётчик цикла лучше сделать целочисленным.
Читать ответpush_back размещает два элемента в динамическом буфере. swap обменивает владение буферами за константное время: поэлементного копирования и нового выделения памяти для обмена не требуется.
Читать ответУберите вложенные if через раннюю проверку пустых указателей и объединение остальных условий оператором &&. Короткое замыкание сохранит порядок и безопасность проверки.
Читать ответ