c++ Qt中的智能指针[重复]

9vw9lbht  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(152)

此问题在此处已有答案

What C++ Smart Pointer Implementations are available?(3个答案)
九年前就关门了。
就像它已经被写here Qt到目前为止有8个专门的智能指针类。它看起来是所有你将永远需要。然而,为了使用这些智能指针中的任何一个,你的类必须派生自QObject,这并不总是方便的。在Qt中是否有其他智能指针的实现,可以与任意类一起工作?

h43kikqp

h43kikqp1#

许多Qt类都是从QObject派生的,虽然一些内置的智能指针类与QObject(或QSharedData)相关,但QSharedPointer和QScopedPointer模板似乎允许指针指向任何东西。
更"现代"的C++(从C++11开始)有一些有用的智能指针类型:https://stackoverflow.com/a/30143936/33987.
除此之外,您还可以在Boost中找到一些smart pointer templates

  • scoped_ptr-简单的单一对象的唯一所有权。不可复制。
  • scoped_array-数组的简单唯一所有权。不可复制。
  • shared_ptr-对象所有权在多个指针之间共享。
  • shared_array-多个指针共享数组所有权。
  • weak_ptr-shared_ptr拥有的对象的非拥有者观察器。
  • intrusive_ptr-具有嵌入引用计数的对象的共享所有权。

相关问题