gpt4 book ai didi

c++ - 将 unique_ptr 转移到另一个的有效和/或正确的方法是什么?

转载 作者:行者123 更新时间:2023-11-27 23:13:43 26 4
gpt4 key购买 nike

例如

class A
{
public:
setB(unique_ptr<B> b) {???;}
setB(unique_ptr<B>& b) {???;}
setB(unique_ptr<B>&& b) {???;}

private:
unique_ptr<B> mB;
};

如何将参数内容的所有权转移或移动(而不是复制)给类成员?

最佳答案

std::unique_ptr 的特定情况下,第一个和第三个备选方案基本上是等效的,并且比第二个备选方案(不允许临时变量)更好。

第一个和第三个替代方案是等价的,因为从调用者的角度来看,她需要一个右值引用来构造第一个重载的参数。从概念上讲,可能存在 std::unique_ptr 的额外拷贝,但我怀疑这会导致二进制文件中出现任何真正的指令,即使它确实存在,它也只是一个指针拷贝和设置(2 个 cpu 指令)

关于c++ - 将 unique_ptr 转移到另一个的有效和/或正确的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133486/

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