Advertisement
RobertDeMilo

BB4.6 Присваивание умных указателей

Jun 21st, 2024
61
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. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. struct Actor
  8. {
  9.      Actor(string name):    name_(move(name))
  10.      {  cout << name_ << " was born!" << endl; }
  11.    
  12.      ~Actor()
  13.      {  cout << name_ << " died!" << endl; }
  14.    
  15.      void DoWork()
  16.      {  cout << name_ << " did some job!" << endl; }
  17.    
  18.     string name_;
  19.  };
  20.  
  21.  void run (Actor* ptr)
  22.  {
  23.     if(ptr)
  24.      {
  25.          ptr->DoWork();
  26.      }
  27.      else
  28.      {
  29.          cout << "An actor was expected" << endl;
  30.      }
  31.  }
  32.  
  33.  int main()
  34.  {
  35.  
  36. // shared_ptr <Actor> ptr = make_shared<Actor>();
  37. // run(ptr.get());
  38. // auto ptr2 = ptr;
  39. // run(ptr2.get());
  40. // run(ptr.get());
  41.  
  42. // auto ptr1 = make_unique <Actor>("Alice");
  43. // auto ptr2 = make_unique <Actor>("Boris");
  44. cout << "------------------------------------" << endl;
  45.  
  46. ptr1 = move(ptr2);
  47.  
  48. run(ptr1.get());
  49. run(ptr2.get());
  50.  
  51. cout << "------------------------------------" << endl;
  52.  
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement