成员函数返回成员变量的右值引用

时间:2017-12-11 16:45:23

标签: c++ move move-semantics rvalue-reference xvalue

function 1

function 2function 1之间的区别是什么?

vectormove(data)构建一个临时vector,然后将临时v分配给{{1}}?

无需添加详细信息......

1 个答案:

答案 0 :(得分:2)

在您的小测试案例中,可能没有区别。几乎肯定会省略额外的临时对象。 main中的v将保存成员变量的内容。

但在一般情况下:

版本1将肯定将成员data留在某些未指定的"空"州。即使丢弃了函数返回值。

版本2 可能使成员处于某种未指定的空状态,或者可能不会。例如,如果调用该函数并丢弃其返回值,则该成员将保持不变。这就是为什么可以说std::move本身并没有移动任何东西。