【问题标题】:Should/can smart pointers normally be used? [duplicate]通常应该/可以使用智能指针吗? [复制]
【发布时间】:2012-07-14 02:39:33
【问题描述】:

可能重复:
What is a smart pointer and when should I use one?

我最近阅读了有关智能指针的文章,例如 shared_ptrauto_ptr。比普通指针更喜欢它们是好还是坏?

例如我应该在函数的参数中使用它们还是在将指针存储为类的成员时使用它们?

【问题讨论】:

  • 最近阅读过它们? Scott Meyer 早在 1995 年就写过关于他们的文章,因此他们经受住了时间的考验。

标签: c++ smart-pointers


【解决方案1】:

他们是个好主意。它们比普通指针慢。但是,在不了解整个指针生命周期或只是为了安全起见,最好使用智能指针。
对于函数的参数,如果函数要么存储指针,要么导致删除,最好使用智能指针。否则普通指针也不错。

【讨论】:

  • 它们并不比普通指针慢。
  • @rubenvb:他们添加了非 nop 操作来复制、构造和释放,因此程序会变慢。但这并不是说它会慢很多,甚至可能不会被发现。
  • @Dani: shared_ptr 确实添加了操作,但 unique_ptr(或者 auto_ptr,如果你过去被卡住了)没有原始指针的开销。
猜你喜欢
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2016-04-06
  • 2013-04-16
  • 2011-10-04
相关资源
最近更新 更多