#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "constructor: " << this << endl;
}
A(const A & B)
{
cout << "copy constructor: " << this << endl;
}
A& operator=(const A & B)
{
cout << "copy asignment: " << this << endl;
}
~A()
{
cout << "Destroyer: " << this << endl;
}
};
A f()
{
A a;
return a;
}
int main()
{
A b;
b = f();
A c=b;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBBCnsKcHVibGljOgoJQSgpCgl7CgkJY291dCA8PCAiY29uc3RydWN0b3I6ICIgIDw8ICB0aGlzIDw8IGVuZGw7Cgl9CglBKGNvbnN0IEEgJiBCKQoJewoJCWNvdXQgPDwgImNvcHkgY29uc3RydWN0b3I6ICIgPDwgdGhpcyA8PCBlbmRsOwoJfQoJQSYgb3BlcmF0b3I9KGNvbnN0IEEgJiBCKQoJewoJCWNvdXQgPDwgImNvcHkgYXNpZ25tZW50OiAiIDw8IHRoaXMgPDwgZW5kbDsKCX0KCX5BKCkKCXsKCQljb3V0IDw8ICJEZXN0cm95ZXI6ICIgPDwgdGhpcyA8PCBlbmRsOwoJfQp9OwpBIGYoKQp7CglBIGE7CglyZXR1cm4gYTsKfQppbnQgbWFpbigpCnsKCUEgYjsKCWIgPSBmKCk7CglBIGM9YjsKCXJldHVybiAwOwp9