gpt4 book ai didi

c++ - 调用移动构造函数时

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:46 24 4
gpt4 key购买 nike

我想知道什么时候在 C++ 代码中调用移动构造函数。

这意味着,我知道当我调用 Foo a(b) 时它是复制构造函数,所以我需要编写什么代码来调用移动构造函数。

最佳答案

移动构造函数只是另一个构造函数。如果你有重载的构造函数,就像重载任何其他函数一样,调用哪个构造函数的选择归结为重载决议的规则。也就是说,当您使用 Foo a(<some-expression>); 构造对象时,可能有多个可能的构造函数,需要选择一个。

复制构造函数接受一个 const Foo& 类型的参数.此左值引用类型将绑定(bind)到表示 Foo 的任何表达式目的。移动构造函数接受一个类型为 Foo&& 的参数.此右值引用将仅绑定(bind)到可修改的右值。事实上,在传递可修改的右值的情况下,这种重载将是首选。

这意味着在 Foo a(<some-expression>);如果表达式 <some-expression>是可修改的右值,将选择移动构造函数。否则选择复制构造函数。可修改的右值通常出现在表示临时对象(例如,从函数返回的对象)时。也可以使用 std::move 将表达式强制为右值表达式,例如 Foo a(std::move(b)); .

关于c++ - 调用移动构造函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593858/

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