首页 > 解决方案 > std::move 的效果

问题描述

struct Base
{
    Base(int a_) : a(a_)
    {
    }
    int a;
};
class Derived: public Base
{
public:
    Derived(int i): Base(i)
    {
    }
    Derived(const Derived && rhs)
        : Base(std::move(rhs))
    {
    }
};

int main()
{
    Derived d1(2);
    Derived d2 = std::move(d1);
    std::cout << d1.a << '\n';
}

为什么我们刚刚移动的东西,也就是我们刚刚窃取的东西,仍然可以在后续代码行中访问?我的意思是d1.a

标签: c++11

解决方案


推荐阅读