и посмотреть медиа
Entry Point - programming basics
и посмотреть медиа
Basic knowledge on programming fundamentals for beginners.
Basic knowledge on programming fundamentals for beginners.
Course of fundamental concepts: algorithms, data structures, programming languages. Ideal for beginners without experience.
Перемещение в C++ не отменяет уничтожение исходного объекта Когда std::vector создаёт новый элемент из std::move(s), исходный s остаётся в своей области видимости. При выходе из неё C++ всё равно вызывает деструктор: специальную функцию, которая срабатывает при уничтожении объекта. Если внутри есть системный вызов или удаление записи из общего реестра, даже перемещённый объект может выполнить лишнюю работу. ManualDrop отделяет время жизни объекта от памяти, в которой он лежит. Обёртка убирает автоматический вызов деструктора и позволяет вызвать его явно либо переместить значение в другой объект с автоматическим уничтожением. В разборе с исходным кодом повторите пример со std::vector сначала без ManualDrop, затем с ним. Сравните вывод конструкторов и деструкторов. Используйте приём только там, где значение гарантированно будет перемещено из своей области видимости.
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!