这三个是分别来自Qt、STL和Boost的共享指针类。它们在功能上似乎是相同的,所以我很困惑:
- 它们各自的优缺点是什么?
- 为什么Boost和Qt版本甚至存在——它已经在STL中了,为什么要自己做?
- 我应该如何选择使用哪一个?
在这里找到你的问题的答案。
- QSharedPointer需要Qt,
shared_ptr
是标准的和可移植的 -
std::shared_ptr
是boost::shared_ptr
的标准替代品(也就是说,升压一个先出现,它成为标准) 不要使用QSharedPointer,除非你有一个Qt类需要它。如果您有tr1或c++ 0x实现,请使用
std::shared_ptr
,否则使用boost::shared_ptr
。