【发布时间】:2020-02-23 02:52:05
【问题描述】:
我正试图了解移动语义。我很困惑,因为我不知道我们为什么需要它以及我们应该如何理想地使用它。
例如,当我们用 std::move 移动一个对象时,它使该对象为 nullptr。为什么会这样?另外,为什么 std::move 将对象转为右值?这是怎么发生的?为什么将 std::move 与变量一起使用后,它不会用 null 填充它,但是当我将它与向量之类的对象一起使用时,在移动它之后,它会用 nullptr 填充它。
我希望有人逐步解释 CPP 的移动语义和其他语义。我读得越多,我就越困惑。它是 CPP 编程中最复杂的主题之一。
【问题讨论】:
-
when we move an object with by std::move, it makes the object nullptr.什么?Also, why std::move turn an object to rvalue?因为这就是它的目的how does this happen?一个简单的演员表。 -
你在用哪本书?一点都不复杂(与 C++ 的许多其他方面相比)
-
std::move只不过是一个演员表。它本身不会改变任何对象。它所做的只是在某些情况下启用一个动作。 -
我什至不敢称它为演员表,tbh。没有类型改变;这只是身份功能。但是因为它是一个函数,所以它的结果是一个右值表达式。尤泽尔。
-
你知道吗,我收回来:我想这一切的骇人听闻确实让我想完全摸索有点复杂
标签: c++ visual-c++ move-semantics