【问题标题】:improvements/changes in pointers with time?指针随时间的改进/变化?
【发布时间】:2011-09-13 03:35:23
【问题描述】:

也许,指针一直在修改过程中 指向 auto_ptr 的常规指针指向 unique_ptr 和 shared_ptr

我只是想知道已经开发的新类型的指针完全取代了旧版本(或者你可能认为有内存泄漏问题的指针版本)

我不认为常规指针已经死了,但最近我遇到了 auto-ptr,然后我对添加到 C++ox 中的 shared_ptr 和 unique_ptr 有了一些了解。我不能使用它们(shared_ptr 和 unique_ptr)虽然因为我有 Visual C++ 2008。

auto_ptr 也完全被 unique_ptr 和 shared_ptr 接管了吗?

请提供一些见解。

【问题讨论】:

    标签: c++ pointers


    【解决方案1】:

    如果您不拥有它指向的对象,原始指针仍然很有用。 auto_ptr 已被正式弃用(所以是的,对于新代码来说它几乎已经死了)。 VS2008 提供shared_ptr 虽然作为 TR1 的一部分,但总是有 Boost。我现在认为在我的 C++ 生活中不需要任何其他智能指针。

    【讨论】:

    • @ildjarn:我也是。不过,shared_ptr 还是很有用的。
    • unique_ptrshared_ptr 相辅相成,你不应该对所有事情都使用shared_ptr,因为它的引用计数会慢很多......
    【解决方案2】:

    Qt 提供QSharedDataPointer,它有助于提供写时复制功能。它是侵入性的,因为它只接受从QSharedData 派生的类型,而不是任何任意数据。我自己的实用程序对象库包括一个带有复制构造函数的deep_ptr 类型,该构造函数复制其存储的数据,而不仅仅是为指针设置别名。它专门用作实现 Pimpls 的一种方式,这样我就不必费心实现 Big 3,但仍然可以开箱即用地获得值语义。

    但实际上,shared_ptrweak_ptrunique_ptr 确实提供了几乎所有需要的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多