隐式move构造函数到底在做什么?例如,以下类的隐式move构造函数的外观如何(您能否提供此隐式构造函数的示例实现):
struct A
{
A() = default;
A(A && other) = default;
int a;
};
struct B : public A
{
int b;
int * c;
};
实现看起来像这样:
B(B && other) : A(std::move(other)), b(std::move(other.b)), c(std::move(other.c)) {}
来自cppreference.com:
对于联合类型,隐式定义的move构造函数将复制对象表示(如std :: memmove所示)。对于非工会班级类型(类和结构),move构造函数执行完整的成员级操作对象的基础和非静态成员的移动,在它们中初始化顺序,使用带有xvalue的直接初始化论点。如果这满足constexpr的要求构造函数,生成的move构造函数为constexpr。
基类构造函数在派生类之前运行。