能用moved-from object做些什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

例如,以函数模板为例swap如标准库中所定义的:

template <typename T>
void swap(T& a, T& b)
{
    T c = std::move(a); // line 1
    a = std::move(b);   // line 2: assignment to moved-from object!
    b = std::move(c);   // line 3: assignment to moved-from object!
}

显然,必须可以将其赋值给从移出的对象,否则第2行和第3行将失败

提问于
用户回答回答于

移出对象以未指定但有效的状态存在。这表明,虽然对象可能不再有能力,但其所有成员函数仍应该表现出已定义的行为 - 包括operator=- 及其所有成员处于已定义状态 - 并且仍然需要销毁

用户回答回答于

操作实例一般没有先决条件:

  • destruction
  • assignment
  • const 比如 get, empty, size

操作实例一般确实有先决条件:

  • dereference
  • pop_back

链接

扫码关注云+社区