引用unique_ptr是否是一种不好的用法?

Is it a bad usage to reference a unique_ptr?

本文关键字:一种 用法 unique ptr 是否是 引用      更新时间:2023-10-16

将unique_ptr的引用传递给函数是不好的用法吗?

void Foo(std::unique_ptr<T>& rT)
{
   ...
}

void Foo(std::unique_ptr<T>& rT)意味着两件事:

不能像这样调用函数:Foo(std::unique_ptr<T>(new T));,因为它是一个非const左值引用。这限制了你的函数只能接受左值。

如果你传递一个左值,你不知道它会发生什么:Foo(myunique_ptr);。在这样的调用中,您不知道Foo是否声明std::unique_ptr的所有权。如果调用者不知道Foo内部发生了什么,并且从函数签名中肯定不清楚,那么这可能是危险的。

现在考虑以上因素,你可以决定这是不是不好的用法。

相关文章: