c++ - 在基类之间 move 语义

标签 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...........
};

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

如何实现构造函数? 除了 std::array::swap,还有其他方法吗?

最佳答案

你可以这样做:

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

此 move 分配 vthis 的基类

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

关于c++ - 在基类之间 move 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710939/

相关文章:

c++ - 对 C++ #include 感到困惑

c++ - 如何折叠STL vector 的子 vector ?

c++ - 当类型参数为空时无法实例化函数模板

c++ - 共享互斥量是否比相对较大结构的原子更有效?

c++ - 为什么使用 `none const copy constructor` 时编译器会报错?

c++ - Memset 枚举数组值设置不正确 (C/C++)

c++ - 是否可以在类初始化之前填充 const QHash (或类似的)?

c++ - Remove_If 字符串不区分大小写

arrays - 在稳定 Rust 中,如何将最小值移出数组,删除其他值?

c++ - 如何将相互依赖的对象 move 在一起并维护内部引用