#include <iostream>
using namespace std;
class Object {
public:
Object(int id){
cout << "Construct(" << id << ")" << endl;
m_id = id;
}
Object(const Object& obj){
cout << "Copy-construct(" << obj.m_id << ")" << endl;
m_id = obj.m_id;
}
Object& operator=(const Object& obj){
cout << m_id << " = " << obj.m_id << endl;
m_id = obj.m_id;
return *this;
}
~Object(){
cout << "Destruct(" << m_id << ")" << endl;
}
private:
int m_id;
};
int main(){
Object v1(1);
cout << "( a )" << endl;
Object v2(2);
v2 = v1;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgT2JqZWN0IHsKCnB1YmxpYzoKICAgT2JqZWN0KGludCBpZCl7CiAgICAgY291dCA8PCAiQ29uc3RydWN0KCIgPDwgaWQgPDwgIikiIDw8IGVuZGw7CiAgICAgbV9pZCA9IGlkOwogICB9CgogICBPYmplY3QoY29uc3QgT2JqZWN0JiBvYmopewogICAgICBjb3V0IDw8ICJDb3B5LWNvbnN0cnVjdCgiIDw8IG9iai5tX2lkIDw8ICIpIiA8PCBlbmRsOwogICAgICBtX2lkID0gb2JqLm1faWQ7CiAgIH0KCiAgIE9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IE9iamVjdCYgb2JqKXsKICAgICAgY291dCA8PCBtX2lkIDw8ICIgPSAiIDw8IG9iai5tX2lkIDw8IGVuZGw7CiAgICAgIG1faWQgPSBvYmoubV9pZDsKICAgICAgcmV0dXJuICp0aGlzOwogICB9CgogICB+T2JqZWN0KCl7CiAgICAgICBjb3V0IDw8ICJEZXN0cnVjdCgiIDw8IG1faWQgPDwgIikiIDw8IGVuZGw7CiAgIH0KcHJpdmF0ZToKICAgaW50IG1faWQ7Cgp9OwoKaW50IG1haW4oKXsKICAgT2JqZWN0IHYxKDEpOwogICBjb3V0IDw8ICIoIGEgKSIgPDwgZW5kbDsKICAgT2JqZWN0IHYyKDIpOwogICB2MiA9IHYxOwp9