【发布时间】:2020-09-17 14:08:15
【问题描述】:
鉴于以下所有者的定义,讨论不拥有资源的对象的移动语义是否有意义?
https://www.stroustrup.com/resource-model.pdf
所有者是一个对象,其中包含指向由 new 分配的对象的指针,需要对其进行删除。
换一种说法,为一个没有指向堆上分配的对象的指针的对象显式定义移动构造函数和移动赋值运算符是否有意义?
谢谢
【问题讨论】:
-
这对于任何包含需要清理的资源的对象都是有意义的(我已经为包含 OpenGL id 的包装器对象做了它,文件描述符是另一个很好的对象)
-
“所有者”可能不是一个好词。这样的对象借用了一个资源,当你借用完资源时,你需要一个析构函数来返回资源。
new只是从堆中借用内存。 “搬家”也意味着您将借用资源归还给贷方的责任。
标签: c++ move-semantics