weak_ptr的使用场景

2020-08-07  本文已影响0人  zlcook

使用场景

#include <iostream>
#include <memory>

class A;

class B{
   public:
   ~B() {
     std::cout << "B destory, a_ptr use_count:" << a_ptr.use_count() << "\n";
   }
   
   std::shared_ptr<A> a_ptr;
 };
 
class A{
public:
    ~A() {
        std::cout << "A destory, b_ptr use_count:" << b_ptr.use_count() << "\n";
    }
      
    std::shared_ptr<B> b_ptr;
};
 
int main()
{
    std::shared_ptr<A> a(new A());
     std::shared_ptr<B> b(new B());
     a->b_ptr=b;
     b->a_ptr=a;
    
     std::cout << "A:" << a.use_count() << "\n";
     std::cout << "B" << b.use_count() << "\n";
}
* 运行结果:
A:2
B:2
class A{
public:
    ~A() {
        std::cout << "A destory, b_ptr use_count:" << b_ptr.use_count() << "\n";
    }
      
    std::weak_ptr<B> b_ptr;
};
 
* 运行结果:
A:2
B:1
B destory, a_ptr use_count:2
A destory, b_ptr use_count:0
上一篇 下一篇

猜你喜欢

热点阅读