所有权和移动语义
Ownership and move semantics
鉴于所有者的以下定义,讨论不拥有资源的对象的移动语义是否有意义?
https://www.stroustrup.com/resource-model.pdf
An owner is an object containing a pointer to an object allocated by new for which a delete is required.
换句话说,为不包含指向在堆上分配的对象的指针的对象显式定义移动构造函数和移动赋值运算符是否有意义?
谢谢
当然。引用的定义是一种简化。一般来说,任何使用 acquire/release 模式的 API 都可以支持移动语义。作为 C++11 的例子,std::unique_lock
是一个可移动的对象。它拥有互斥锁,而不是堆分配。 acquire/release 方法是 .lock
和 .unlock
而不是 new
和 delete
。
鉴于所有者的以下定义,讨论不拥有资源的对象的移动语义是否有意义?
https://www.stroustrup.com/resource-model.pdf
An owner is an object containing a pointer to an object allocated by new for which a delete is required.
换句话说,为不包含指向在堆上分配的对象的指针的对象显式定义移动构造函数和移动赋值运算符是否有意义?
谢谢
当然。引用的定义是一种简化。一般来说,任何使用 acquire/release 模式的 API 都可以支持移动语义。作为 C++11 的例子,std::unique_lock
是一个可移动的对象。它拥有互斥锁,而不是堆分配。 acquire/release 方法是 .lock
和 .unlock
而不是 new
和 delete
。