#include #include class MyClass { private: int data; public: // Constructors: MyClass(int i); MyClass(void); // Assignment: MyClass& operator =(const MyClass &src); MyClass& operator =(const int); // Destructor: ~MyClass(void); }; MyClass::MyClass(int i) { cerr << " Now we're in \"MyClass::MyClass(int i)\"\n"; data = i; } MyClass::MyClass(void) { cerr << " Now we're in \"MyClass::MyClass(void)\"\n"; data = 0; } MyClass& MyClass::operator =(const MyClass &src) { cerr << " Now we're in \"operator =(const MyClass &src)\"\n"; data = src.data; return (*this); } MyClass& MyClass::operator =(const int i) { cerr << " Now we're in \"operator =(const int i)\"\n"; data = i; return (*this); } MyClass::~MyClass(void) { cerr << "destructor\n"; } void main(void) { cerr << "\n\n"; cerr << "About to declare test(10):\n"; MyClass test(10); cerr << "About to declare test2 = test:\n"; MyClass test2 = test; cerr << "(Why didn't we get the msg 'Now we're in \"operator =(const MyClass &src)\"'?)\n"; cerr << "About to declare test3:\n"; MyClass test3; cerr << "About to assign test3 = test:\n"; test3 = test; }