Advertisement
RobertDeMilo

BB4.1 Умный указатель shared_ptr

Jun 13th, 2024
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. using namespace std;
  5.  
  6. struct Actor
  7. {
  8.     Actor()
  9.     {
  10.         cout << "I was born!" << endl;
  11.     }
  12.     ~Actor()
  13.     {
  14.         cout << "I was deleted!" << endl;
  15.     }
  16.     void DoWork()
  17.     {
  18.         cout << "I did some job!" << endl;
  19.     }
  20. };
  21.  
  22. void run(Actor* ptr)
  23. {
  24.     if (ptr)
  25.     {
  26.         ptr->DoWork();
  27.     }
  28.     else
  29.     {
  30.         cout << "an actor was expected :-/" << endl;
  31.     }
  32. }
  33.  
  34. int main()
  35. {
  36.     shared_ptr<Actor> ptr = make_shared<Actor>();
  37.     //shared_ptr умеет делать все тоже самое что и unique_ptr
  38.     //его главное отличие, то что его можно копировать
  39.     //несколько shared_ptr  могут ссылаться на один и тот же объект
  40.  
  41.     run(ptr.get());
  42.     //auto ptr2 = move(ptr);
  43.     auto ptr2 = ptr;
  44.     run(ptr2.get());
  45.     run(ptr.get());
  46.    
  47.     return 0;
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement