#include <iostream>
using namespace std;
class A
{
public :
A( ) { cout << "A constructor" << endl; }
A( const A& a) { cout << "A copy constructor" << endl; }
~A( ) { cout << "A destructor" << endl; }
} ;
A ACreator( )
{
cout << "Creating a on stack" << endl;
A res = A( ) ;
cout << "Returning a" << endl;
return res;
}
void Test( )
{
cout << "Calling ACreator() to get some A" << endl;
A a = ACreator( ) ;
A copy = a;
cout << "Got some a" << endl;
}
int main( ) {
cout << "Calling Test()" << endl;
Test( ) ;
cout << "Test ended. Returning 0" << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CnB1YmxpYzoKCUEoKSB7IGNvdXQgPDwgIkEgY29uc3RydWN0b3IiIDw8IGVuZGw7IH0KCUEoY29uc3QgQSYgYSkgeyBjb3V0IDw8ICJBIGNvcHkgY29uc3RydWN0b3IiIDw8IGVuZGw7IH0KCX5BKCkgeyBjb3V0IDw8ICJBIGRlc3RydWN0b3IiIDw8IGVuZGw7IH0KfTsKCkEgQUNyZWF0b3IoKQp7Cgljb3V0IDw8ICJDcmVhdGluZyBhIG9uIHN0YWNrIiA8PCBlbmRsOwoJQSByZXMgPSBBKCk7Cgljb3V0IDw8ICJSZXR1cm5pbmcgYSIgPDwgZW5kbDsKCXJldHVybiByZXM7Cn0KCnZvaWQgVGVzdCgpCnsKCWNvdXQgPDwgIkNhbGxpbmcgQUNyZWF0b3IoKSB0byBnZXQgc29tZSBBIiA8PCBlbmRsOwoJQSBhID0gQUNyZWF0b3IoKTsKCUEgY29weSA9IGE7Cgljb3V0IDw8ICJHb3Qgc29tZSBhIiA8PCBlbmRsOwp9CgppbnQgbWFpbigpIHsKCWNvdXQgPDwgIkNhbGxpbmcgVGVzdCgpIiA8PCBlbmRsOwoJVGVzdCgpOwoJY291dCA8PCAiVGVzdCBlbmRlZC4gUmV0dXJuaW5nIDAiIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==