在基类之间移动语义

时间:2013-02-05 15:24:56

标签: c++ c++11 move-semantics

我们有这些课程:

struct Intermediate : public std::array<double,3> {};

struct Vector3 : public Intermediate
{
   // ........more ctors.........

   // Modified move constructor (base class)
   Vector3(std::array<double,3> &&v) { ??????? }

   // ........more functionality...........
};

“修改后的”移动构造函数是否像原始移动构造函数一样?

如何实现构造函数? 还有另一种方法,而不是std :: array :: swap?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

Vector3(std::array<double,3> &&v)
{ static_cast<std::array<double,3>&>(*this) = std::move(v); }

此移动 - 将v分配给this

的基类

但是那个移动构造函数似乎毫无意义。当你move double数组时,它无论如何都会复制。 double没有移动语义,只有复制语义,array<double,N>直接在其中包含数组,因此无法将其移动到另一个对象。