move derived obj d to derived dd, but match base's move constructor, do not match derived's constructor
// 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;
}
I do not know why dd.y will be 1, not 0 ?
how d.y copied to dd.y struct ?