#include <iostream>
class abc{
public:
int a, b;
abc()
{ std::cout << "Default constructor\n"; a = 0; b = 0;}
abc(int x)
{ std::cout << "Int constructor\n"; a = x;}
abc(abc const& other): a(other.a), b(other.b)
{ std::cout << "Copy constructor (" << a << ", " << b << ")\n"; }
abc& operator=(abc const& other) {
std::cout << "Assignment operator (" << a << ", " << b << ") = (" << other.a << ", " << other.b << ")\n";
a = other.a;
b = other.b;
return *this;
}
~abc()
{std::cout << "Destructor Called\n";}
};
int main()
{
abc obj1;
std::cout << "OBJ1 " << obj1.a << "..." << obj1.b << "\n";
abc obj2;
std::cout << "OBJ2 " << obj2.a << "..." << obj2.b << "\n";
obj2 = 100;
std::cout << "OBJ2 " << obj2.a << "\n";
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCiAgICBjbGFzcyBhYmN7CiAgICBwdWJsaWM6CiAgICAgICAgaW50IGEsIGI7CiAgICAKICAgICAgICBhYmMoKQogICAgICAgIHsgc3RkOjpjb3V0IDw8ICJEZWZhdWx0IGNvbnN0cnVjdG9yXG4iOyBhID0gMDsgYiA9IDA7fQogICAgCiAgICAgICAgYWJjKGludCB4KQogICAgICAgIHsgc3RkOjpjb3V0IDw8ICJJbnQgY29uc3RydWN0b3JcbiI7IGEgPSB4O30KICAgIAogICAgICAgIGFiYyhhYmMgY29uc3QmIG90aGVyKTogYShvdGhlci5hKSwgYihvdGhlci5iKQogICAgICAgIHsgc3RkOjpjb3V0IDw8ICJDb3B5IGNvbnN0cnVjdG9yICgiIDw8IGEgPDwgIiwgIiA8PCBiIDw8ICIpXG4iOyB9CgogICAgICAgIGFiYyYgb3BlcmF0b3I9KGFiYyBjb25zdCYgb3RoZXIpIHsKICAgICAgICAgIHN0ZDo6Y291dCA8PCAiQXNzaWdubWVudCBvcGVyYXRvciAoIiA8PCBhIDw8ICIsICIgPDwgYiA8PCAiKSA9ICgiIDw8IG90aGVyLmEgPDwgIiwgIiA8PCBvdGhlci5iIDw8ICIpXG4iOwogICAgICAgICAgYSA9IG90aGVyLmE7CiAgICAgICAgICBiID0gb3RoZXIuYjsKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICAgIH5hYmMoKQogICAgICAgIHtzdGQ6OmNvdXQgPDwgIkRlc3RydWN0b3IgQ2FsbGVkXG4iO30KICAgIH07CiAgICBpbnQgbWFpbigpCiAgICB7CiAgICAgICAgYWJjIG9iajE7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJPQkoxICIgPDwgb2JqMS5hIDw8ICIuLi4iIDw8IG9iajEuYiA8PCAiXG4iOwogICAgICAgIGFiYyBvYmoyOwogICAgICAgIHN0ZDo6Y291dCA8PCAiT0JKMiAiIDw8IG9iajIuYSA8PCAiLi4uIiA8PCBvYmoyLmIgPDwgIlxuIjsKICAgICAgICBvYmoyID0gMTAwOwogICAgICAgIHN0ZDo6Y291dCA8PCAiT0JKMiAiIDw8IG9iajIuYSA8PCAiXG4iOwogICAgCiAgICAgICAgcmV0dXJuIDA7CiAgICB9