Advertisement
Guest User

copy (ugly)

a guest
Oct 21st, 2013
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. class Foo {
  2. public:
  3.   Foo(A* a, B* b) : a(a), b(b) {}
  4.   ~Foo() {
  5.     delete a;
  6.     delete b;
  7.   }
  8.  
  9.   Foo(const Foo& rhs) {
  10.       operator=(rhs);
  11.   }
  12.  
  13.  
  14.   Foo& operator=(const Foo& rhs) {
  15.      
  16.       if (this == &rhs)
  17.         return *this;
  18.      
  19.       if (a) {
  20.           delete a;
  21.           a = 0;
  22.       }
  23.       if (b) {
  24.           delete b;
  25.           b = 0;
  26.       }
  27.      
  28.       try {
  29.           if (rhs.a)
  30.               a = new A(*rhs.a);
  31.           if (rhs.b)
  32.               b = new B(*rhs.b);
  33.       } catch (...) {
  34.           if (a)
  35.               delete a;
  36.           throw;
  37.       }
  38.      
  39.       return *this;
  40.   }
  41.  
  42. private:
  43.   A* a;
  44.   B* b;
  45. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement