Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpLwEd 520 of 696 menu
◀ ▶

Явный вызов деструктора в C++

Явный вызов деструктора записывают как указатель->~Тип() и нужен, когда объект создан размещающим new в собственной памяти.

Буфер уже содержит готовый объект - остается корректно уничтожить его перед повторным использованием байтов. Вызовем деструктор и выведем метку до и после очистки:

#include <iostream> #include <new> struct Tag { int code; explicit Tag(int c) : code(c) {} ~Tag() { std::cout << "dtor\n"; } }; int main() { alignas(Tag) unsigned char block[sizeof(Tag)]; Tag* p = new (block) Tag(3); std::cout << p->code << "\n"; p->~Tag(); return 0; }

В готовом буфере уже лежит Tag. Вызовите p->~Tag() для указателя на него и убедитесь, что строка "dtor" появилась в выводе.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить