    #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;
    }