例如
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/