Кто отвечает за освобождение ресурса, перемещенного с помощью std :: move? - PullRequest
0 голосов
/ 04 июня 2018

Рассмотрим простой код, приведенный ниже:?Означает ли это, что мы не должны вызывать std::move для объекта в стеке?

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Кто отвечает за освобождение ресурса, перемещенного std::move?

Объектом, в который вы переместили данные.Объект, с которого вы переместили данные, должен быть безопасным для использования и уничтожения.

0 голосов
/ 04 июня 2018

Кто отвечает за освобождение ресурса, перемещенного с помощью std :: move?

Автор объекта отвечает за соблюдение правила из пяти .

Так как test требует пользовательского удаления, также предполагается, что требуются пользовательские операции перемещения и копирования.

В качестве альтернативы элемент int *x; можно заменить наумный указатель, устраняющий необходимость в собственном деструкторе и придерживающийся правила Zero .

0 голосов
/ 04 июня 2018

Означает ли это, что мы не должны вызывать std::move для объекта в стеке?

Нет, это означает, что вы должны были предоставить конструктор перемещения, который бы установил xк нулю.

Обратите внимание, что в вашем случае нет конструктора перемещения по умолчанию, поскольку вы определили свой собственный деструктор ( ref ).

PS: не забывайте правило 5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...