在需要确保复制非常重要或需要确保语义正确的情况下,可以使用std::move进行强制移动,以避免复制省略的问题。例如:
std::vector foo() {
std::vector v {1, 2, 3, 4, 5};
return v;
}
int main() {
std::vector v = foo(); // 可能会发生复制省略
// 我们可以使用std::move来强制移动,确保复制不会发生
std::vector v2 = std::move(foo());
// 此时,v2将包含原始vector v的内容,而v将为空。
return 0;
}
上一篇:不可预测的敌人速度变化