隐式移动构造函数

问题描述 投票:0回答:1

隐式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)) {}
c++ c++11 move-semantics
1个回答
1
投票

来自cppreference.com:

对于联合类型,隐式定义的move构造函数将复制对象表示(如std :: memmove所示)。对于非工会班级类型(类和结构),move构造函数执行完整的成员级操作对象的基础和非静态成员的移动,在它们中初始化顺序,使用带有xvalue的直接初始化论点。如果这满足constexpr的要求构造函数,生成的move构造函数为constexpr。

基类构造函数在派生类之前运行。

© www.soinside.com 2019 - 2024. All rights reserved.