0
A
回答
5
void Foo(std::unique_ptr<T>& rT)
意味着两两件事:
不能调用函数是这样的:Foo(std::unique_ptr<T>(new T));
,因为它是一个非const左值参考。这限制了你的函数只接受左值。
如果你通过一个左值,你不知道它会发生什么:Foo(myunique_ptr);
。在这样的通话中,您不知道Foo
是否拥有std::unique_ptr
的所有权。如果主叫方不知道Foo
内部发生了什么,并且从功能签名中确定不清楚,则这可能很危险。
现在考虑到上述因素后,您可以决定是否使用不良。
+1
最后一句话+1。我必须记住这一点。好的 – 2013-03-11 04:25:44
检查了这个http://stackoverflow.com/questions/9699333/passing-unique-ptr-to-functions – SRJ 2013-03-11 03:47:14
完全没有上下文?是的,这很糟糕。唯一的指针只应该暴露给那些关心被管理对象所有权的人,这在你的代码中很少出现。 – 2013-03-11 03:47:34
更好地解释你实际上在做什么,详细地询问你是否使用了一种好的方法。 – Nemo 2013-03-11 03:48:53