我们有这些课程:
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?
答案 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>
直接在其中包含数组,因此无法将其移动到另一个对象。