#ifndef BIG_CLASS_H #define BIG_CLASS_H #include #include "this_class.h" #include "that_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) : a(rhs.a), b(rhs.b), id(rhs.id) { cout << "BigClass copy constructor" << endl; } /* * 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