#include <iostream>
using namespace std;
class Test
{
private:
int *a;
int size;
public:
Test(int value);
// Test (const Test &obj);
Test& operator=(const Test &obj);
int getSize()
{
return *a;
}
void setValue(int val)
{
*a = val;
}
};
/*Test::Test (const Test &obj)
{
size = obj.size;
}*/
Test& Test::operator=(const Test &obj)
{
if (this == &obj)
return *this;
size = obj.size;
*a = *(obj.a);
return *this;
}
Test::Test(int value)
{
a = NULL;
size = value;
cout << "size is " << size << "\n";
a = new int(size);
if (a == NULL)
cout << "Memory allocation failed\n";
}
int main()
{
Test t1(5);
{
Test t2(6);
t2 = t1;
t2.setValue(12);
cout << "t2 size is " << t2.getSize() <<"\n";
}
cout << "t1 size is " << t1.getSize() << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFRlc3QKewpwcml2YXRlOgoJaW50ICphOwoJaW50IHNpemU7CnB1YmxpYzoKCVRlc3QoaW50IHZhbHVlKTsKLy8JVGVzdCAoY29uc3QgVGVzdCAmb2JqKTsKCVRlc3QmIG9wZXJhdG9yPShjb25zdCBUZXN0ICZvYmopOwoJaW50IGdldFNpemUoKQoJewoJCXJldHVybiAqYTsKCX0KCXZvaWQgc2V0VmFsdWUoaW50IHZhbCkKCXsKCQkqYSA9IHZhbDsKCX0KfTsKCi8qVGVzdDo6VGVzdCAoY29uc3QgVGVzdCAmb2JqKQp7CiAgICBzaXplID0gb2JqLnNpemU7CiAgICAKfSovCgpUZXN0JiBUZXN0OjpvcGVyYXRvcj0oY29uc3QgVGVzdCAmb2JqKQp7CglpZiAodGhpcyA9PSAmb2JqKQoJCXJldHVybiAqdGhpczsKCQkKCXNpemUgPSBvYmouc2l6ZTsKCQoJKmEgPSAqKG9iai5hKTsKCXJldHVybiAqdGhpczsKfQoKVGVzdDo6VGVzdChpbnQgdmFsdWUpCnsKCWEgPSBOVUxMOwoJc2l6ZSA9IHZhbHVlOwoJY291dCA8PCAic2l6ZSBpcyAiIDw8IHNpemUgPDwgIlxuIjsKCWEgPSBuZXcgaW50KHNpemUpOwoJaWYgKGEgPT0gTlVMTCkKCQljb3V0IDw8ICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiI7Cn0KCmludCBtYWluKCkKewoJVGVzdCB0MSg1KTsKCXsKCQlUZXN0IHQyKDYpOwoJCXQyID0gdDE7CgkJdDIuc2V0VmFsdWUoMTIpOwoJCWNvdXQgPDwgInQyIHNpemUgaXMgIiA8PCB0Mi5nZXRTaXplKCkgPDwiXG4iOwoJfQoJY291dCA8PCAidDEgc2l6ZSBpcyAiIDw8IHQxLmdldFNpemUoKSA8PCAiXG4iOwoJCglyZXR1cm4gMDsKfQ==