首先,让我带你们进入我的思想高速公路(简单地说,我只是在想象这些事情)
假设,我正在使用使用移动语义(右值引用)的第三方库类。这是它的定义:
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
的拷贝。
嗯,核心问题是: 我如何复制一个只有一个移动构造函数和一个移动运算符的对象?
P.S.:我已经试过了,但我无法真正联系到图书馆的作者(我认为他正在度假)。
最佳答案
你不能。
但是,如果您有足够的权限访问它的内部结构(getter 等),那么您可以自己构造一个克隆。
关于c++ - 仅使用移动语义复制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601516/