简单来说:
{ // Enter scope
shared_ptr<A> my_a(new A);
shared_ptr<B> my_b(new B);
my_a->remember_this_b( my_b ); // Stores a copy of a smart pointer
my_b->remember_this_a( my_a ); // Stores a copy of a smart pointer
} // Leave scope. my_a and my_b are destroyed.
Run Code Online (Sandbox Code Playgroud)
如果这两个函数都存储了a shared_ptr,则永远不会删除对象,因为它们都shared_ptr不会达到零引用计数.
但是,如果任何一个使用了a weak_ptr,那么weak_ptr当离开范围时,将指向的对象将被销毁.而这反过来会破坏最后一个shared_ptr对象.
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |