首先,让我带大家进入我的思想高速公路(简单地说,我只是在想象这些事情)
假设,我正在使用一个使用移动语义(右值引用)的第三方库类。这是它的定义:
class VeryHeavyObject {
VeryHeavyObject(const VeryHeavyObject& obj); // copy constructor
VeryHeavyObject& operator= (const VeryHeavyObject& obj); // copy operator
public:
VeryHeavyObject(); // constructor
VeryHeavyObject(VeryHeavyObject&& obj); // move constructor
VeryHeavyObject& operator= (VeryHeavyObject&& obj); // move operator
// ....
};
显然,作者真的很关心复制的成本VeryHeavyObject
并决定强制移动所有内容(更明显的是,他不知道如何设计具有移动语义的类)。但是,在我的代码中,我需要有一份.VeryHeavyObject
好吧,核心问题是: 如何仅使用移动构造函数和移动运算符来复制对象?
PS:我试过了,但我无法真正联系到图书馆的作者(我认为他正在度假)。