我们有这些类:
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...........
};
“修改后的” move 构造函数是否像原始 move 构造函数一样?
如何实现构造函数? 除了 std::array::swap,还有其他方法吗?
最佳答案
你可以这样做:
Vector3(std::array<double,3> &&v)
{ static_cast<std::array<double,3>&>(*this) = std::move(v); }
此 move 分配 v
到 this
的基类
但是 move 构造函数似乎毫无意义。当你move
double
的数组无论如何它只会复制一份。 double
没有 move 语义,只有复制语义,并且array<double,N>
直接在其中包含数组,因此无法将其 move 到另一个对象。
关于c++ - 在基类之间 move 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710939/