首页 > 解决方案 > 派生传递给超级移动构造函数

问题描述

将派生的 obj 移动d到派生的dd,但匹配base的移动构造函数,不匹配derived的构造函数

// base class 
class base {
    int x;

public:
    base() = default;

    base(base && b) {
        x = b.x;
    }
};

// derived struct
struct derived : public base {
    int y;

    derived(int d) {
        y = d;
    }

    derived() = default;
};

int main()
{
    derived d{1};
    derived dd = std::move(d);
    spdlog::info(dd.y); // => 1
    return 0;
}

我不知道为什么dd.y会是 1 而不是 0 ?

如何d.y复制到dd.ystruct ?

标签: c++

解决方案


推荐阅读