我明白如何使用weak_ptr和shared_ptr 。 通过计算对象中引用的数量,我明白shared_ptr是如何工作的。 weak_ptr如何工作的? 我试着通过boost源代码阅读,并且我不太熟悉提高,以了解它使用的所有东西。 谢谢。
我正在阅读Scott Meyers的“Effective C ++”一书。 有人提到, tr1::shared_ptr和tr1::weak_ptr像内置指针一样工作,但是它们跟踪有多less个tr1::shared_ptrs指向一个对象。 这被称为参考计数。 这可以很好地防止非循环数据结构中的资源泄漏,但是如果两个或多个对象包含tr1::shared_ptrs以形成一个循环,那么即使循环的所有外部指针都具有循环,循环也可以使对方的引用计数保持在零以上被摧毁。 这就是tr1::weak_ptrs进来的地方。 我的问题是循环数据结构如何使引用计数大于零。 我恳请一个例子C ++程序。 weak_ptrs如何解决问题? (再次,请举例)。
我开始研究C ++ 11的智能指针,我没有看到任何有用的std::weak_ptr 。 有人可以告诉我什么时候std::weak_ptr是有用的/必要的?