std::unique_ptr
的具体用途是什么,何时以及如何最佳使用?
我发现:
我已经知道了:
std::unique_ptr
是在C ++ 11中开发的,可替代std::auto_ptr
std::unique_ptr
没有引用计数,而“拥有”对象指向std::unique_ptr
std::unique_ptr
是转到结构我想知道的是:
std::unique_ptr
更优先(除了唯一性)某事
其他?在这种情况下我会得到什么?std::unique_ptr
不那么有利
整体?std::shared_ptr
足以满足几乎所有的动态内存管理需求
情况,为什么我有一个std::unique_ptr
问题(再次,其他)
比独一无二)?答案 0 :(得分:10)
理论上,您应该对所有指针使用unique_ptr
,除非您知道要共享它,在这种情况下您应该使用shared_ptr
。原因是unique_ptr
开销较少,因为它不计算引用。
但是,unique_ptr
是可移动但不可复制的,因此使用一个作为成员变量可能需要您编写更多代码(例如移动构造函数),按值传递一个意味着您需要使用{ {1}}等等。因此,有些人会因为懒惰而使用std::move
,因为它更容易,而且他们的应用程序的性能差异可能不大。
最后一个原始指针可以用于观察 - 指针使用永远不会影响生命周期。仔细选择正确的指针类型可以让那些阅读代码的人很好地理解你在做什么。有关更多信息,请参阅Herb Sutter的文章Elements of C++ Style,特别是“禁删”部分。