fork download
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. using namespace std;
  5.  
  6. struct Test
  7. {
  8. };
  9.  
  10. int main() {
  11. auto ptr = make_shared<Test>();
  12. auto ptr2 = ptr;
  13. weak_ptr<Test> wp = ptr;
  14.  
  15. std::cout << "Use count #1: " << ptr2.use_count() << std::endl;
  16. std::cout << "Use count #1_wp: " << wp.use_count() << std::endl;
  17. ptr.reset();
  18. std::cout << "Use count #2: " << ptr2.use_count() << std::endl;
  19. std::cout << "Use count #2_wp: " << wp.use_count() << std::endl;
  20. std::cout << "Use count #2_lock: " << wp.lock().use_count() << std::endl;
  21. ptr2.reset();
  22. std::cout << "Use count #3_wp: " << wp.use_count() << std::endl;
  23.  
  24. return 0;
  25. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Use count #1: 2
Use count #1_wp: 2
Use count #2: 1
Use count #2_wp: 1
Use count #2_lock: 2
Use count #3_wp: 0