在C ++中,原始数组是可移动的吗?假设我们使用一个简单的数组来存储某个对象作为类的成员。
class Witharray {
public:
Witharray(Witharray&& o) : arrmem(std::move(o.arrmem)) { }
private:
Myobj arrmem[4];
};
您将收到“error:array used as initializer”。我们可以移动个别元素。任何人都对此有一些评论。也许我们应该使用矢量;但是,对于固定大小的小阵列,原始阵列可能更有效。我搜索了这个论坛,没有找到这个问题的任何答案。
答案 0 :(得分:2)
默认移动构造函数将做正确的事。
Witharray(Witharray&&) = default;
将移动数组成员子对象的元素。
如果您有一些默认移动不足的元素,您可以使用子对象(对于数组或其他元素)为某些和默认的其他元素提供自定义行为。