最佳答案
我正在读 Scott Meyers 的《高效 C + + 》一书。有人提到,有 tr1::shared_ptr
和 tr1::weak_ptr
作为内置的指针,但他们跟踪有多少 tr1::shared_ptrs
指向一个对象。
这就是所谓的引用计数。这在防止非循环数据结构中的资源泄漏方面效果很好,但是如果两个或更多对象包含 tr1::shared_ptrs
,从而形成一个循环,那么循环可以将彼此的引用计数保持在零以上,即使指向循环的所有外部指针都已被销毁。
这就是 tr1::weak_ptrs
的用武之地。
我的问题是,循环数据结构如何使引用计数高于零。我请求一个 C + + 程序的例子。weak_ptrs
是如何解决这个问题的?(请举例)。