#ifndef BIG_PTR_CLASS_H #define BIG_PTR_CLASS_H #include #include "this_ptr_class.h" #include "that_ptr_class.h" using std::cout; using std::endl; class BigClass { public: /* * default constructor -- no initializer list */ BigClass() { cout << "BigClass default constructor" << endl; a = new ThisClass; b = new ThatClass; id = 1; } /* * copy constructor */ BigClass(const BigClass &rhs) { cout << "BigClass copy constructor" << endl; a = new ThisClass(*rhs.a); b = new ThatClass(*rhs.b); id = rhs.id; } /* * operator= definition */ const BigClass & operator=(const BigClass &rhs) { cout << "BigClass operator=" << endl; //alias test, if we are copying to ourself, don't do anything if(this != &rhs) { *a = *(rhs.a); *b = *(rhs.b); id = rhs.id; } return (*this); } /* * default destructor */ ~BigClass() { cout << "BigClass destructor" << endl; delete a; delete b; } private: ThisClass *a; ThatClass *b; int id; }; #endif