c++ - 在可用状态下,C++ 会移动对象?

  显示原文与译文双语对照的内容
62 5

假设我有两个向量,我将它的移动到另一个,v1 = std::move(v2)v2 在这之后仍然是可以用的状态。

时间:原作者:0个回答

50 1

从n3290中,17.6.5.15 从库类型 [lib.types.movedfrom ]的状态

  • 在 C++ 标准库中定义的类型对象可以从( 12.8 ) 移动。移动操作可以显式指定或者隐式生成。除非另外指定,否则从对象移动的类应该以有效但未指定的状态放置。

由于状态有效,这意味着你可以安全地在 v2 ( 比如 。通过分配给它,它将返回到一个已知状态。因为它是未指定的,所以它意味着不能依赖于 v2.empty()的任何特定值,只要它在这里状态( 但调用它不会让程序崩溃) 中。

要注意的是,移动语义("moved从对象移动到一个有效但未指定的状态") is所有代码都应该向( 大部分时间) strive而不仅仅是标准库组件。复制构造函数的语义相似,应该复制一个副本,但是不强制。

原作者:
...