// MyStack.cpp - test automatic type conversion #include using namespace std; class MyStack { private: int fSize; public: MyStack() : fSize(10) { cout << "Create a Stack with 10 elements!" << endl; } explicit MyStack( int aSize ) : fSize(aSize) { cout << "Create a Stack with " << aSize << " elements!" << endl; } MyStack( char* aName = "MyStack", int aSize ) : fSize(aSize) { cout << "Create a Stack( " << aName << " ) with " << aSize << " elements!" << endl; } MyStack( const MyStack& aMyStack ) { cout << "Copy a Stack with " << aMyStack.fSize << " elements!" << endl; fSize = aMyStack.fSize; } MyStack operator=( int aNumber ) { return MyStack( aNumber ); } }; MyStack makeMyStack( int aNumber ) { return MyStack( aNumber ); } MyStack makeMyStack2( MyStack& source ) { cout << "In makeMyStack2..." << endl; return source; } MyStack makeMyStack3( MyStack source ) { cout << "In makeMyStack3..." << endl; return source; } int main() { cout << "Automatic type conversion!" << endl; MyStack s; MyStack s1(40); MyStack s2; s2 = makeMyStack(60); s = s1; s = 20; s1 = makeMyStack2( s2 ); s1 = makeMyStack3( s2 ); return 0; }