0

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

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

1 回答 1

5

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

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

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

现在在考虑到上述情况后,您可以确定它是否使用不当。

于 2013-03-11T04:04:10.827 回答