gpt4 book ai didi

c++ - 为什么 std::move(arg) 改变 arg 参数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:45 24 4
gpt4 key购买 nike

有代码

string one = "one";
string two{ one };
string three{ move(one)};
cout << one << endl;

这会打印“”。这是因为调用了字符串三的 move 构造函数并窃取了它的参数值。但是,变量一怎么修改了?

当我们通过 move(one) 时,返回右值。 move 构造函数从那个右值中窃取资源,变量 1 没有作为引用或指针传递给那里。那么,这种行为是如何发生的呢?

感谢解答

最佳答案

std::move() 实际上并没有改变它的参数

... 但它确实让代码获取 其输出“蚕食”了参数。因此,您的 three 字符串会带走 one 的缓冲区,使其为空。

您还可以阅读 this detailed explanation关于网站上的 std::move()(回答问题 "what is std::move() and when should it be used")。

关于c++ - 为什么 std::move(arg) 改变 arg 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com