C ++构建在数组中是否可移动

时间:2017-05-20 23:37:26

标签: arrays c++11

在C ++中,原始数组是可移动的吗?假设我们使用一个简单的数组来存储某个对象作为类的成员。

class Witharray {
    public:
       Witharray(Witharray&& o) : arrmem(std::move(o.arrmem)) { }

    private:
       Myobj  arrmem[4];
};

您将收到“error:array used as initializer”。我们可以移动个别元素。任何人都对此有一些评论。也许我们应该使用矢量;但是,对于固定大小的小阵列,原始阵列可能更有效。我搜索了这个论坛,没有找到这个问题的任何答案。

1 个答案:

答案 0 :(得分:2)

默认移动构造函数将做正确的事。

Witharray(Witharray&&) = default;

将移动数组成员子对象的元素。

如果您有一些默认移动不足的元素,您可以使用子对象(对于数组或其他元素)为某些和默认的其他元素提供自定义行为。