#ifndef THIS_CLASS_H #define THIS_CLASS_H #include #include "small_class.h" using std::cout; using std::endl; class ThisClass { public: /* * default constructor -- no initializer list */ ThisClass() { cout << "ThisClass default constructor" << endl; id = 2; } /* * copy constructor */ ThisClass(const ThisClass &rhs) : s1(rhs.s1), s2(rhs.s2), id(rhs.id) { cout << "ThisClass copy constructor" << endl; } /* * operator= definition */ const ThisClass & operator=(const ThisClass &rhs) { cout << "ThisClass operator=" << endl; //alias test, if we are copying to ourself, don't do anything if(this != &rhs) { s1 = rhs.s1; s2 = rhs.s2; id = rhs.id; } return (*this); } /* * default destructor */ ~ThisClass() { cout << "ThisClass destructor" << endl; } private: SmallClass s1; SmallClass s2; int id; }; #endif