#ifndef THIS_PTR_CLASS_H #define THIS_PTR_CLASS_H #include #include "small_ptr_class.h" using std::cout; using std::endl; class ThisClass { public: /* * default constructor -- no initializer list */ ThisClass() { cout << "ThisClass default constructor" << endl; s1 = new SmallClass; s2 = new SmallClass; id = 2; } /* * copy constructor */ ThisClass(const ThisClass &rhs) : s1(new SmallClass(*rhs.s1)), s2(new SmallClass(*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; delete s1; delete s2; } private: SmallClass *s1; SmallClass *s2; int id; }; #endif