引用unique_ptr是一个不好的用法吗?

时间:2013-03-11 03:45:33

标签: c++

将unique_ptr的引用传递给函数是不是很糟糕?

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

1 个答案:

答案 0 :(得分:5)

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

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

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

现在考虑到上述因素后,您可以决定是否使用不良。