【发布时间】:2019-02-08 00:55:43
【问题描述】:
以下是我对智能指针的了解
- shared_ptr 是一个智能指针,因此多个 shared_ptr 可以指向堆中的一个对象。即使其中一个 shared_ptr 被删除,只要它的引用计数高于零,堆中的对象也不会被销毁。
- weak_ptr 也指向堆中的一个对象,但它不会增加该对象的引用计数
- 我们可以使用weak_ptr来打破循环引用
在双向链表的情况下,我们有两个指针指向上一个节点和下一个节点。我们在实现中使用了 shared_ptr 和 weak_ptr。我们为什么不使用两个 weak_ptr 呢?
【问题讨论】:
-
我们为什么不直接使用std::list?
-
说真的,我建议不要在实现低级数据结构时使用智能指针。
-
"我们可以使用weak_ptr 来打破循环引用" 算了。这是“解释”它的最糟糕的方式。
标签: c++ pointers c++14 smart-pointers weak-ptr