Why constructor is called twice?

This is because when you do the following: obj2 = 100 ; this one will first call abc(int x) to generate an object of the class, then call the default copy assignment operator (since no user-defined is provided) to assign the value 100 to existing obj2 . After the assignment, the temporary object is destructed.

Read more

Is constructor called?

In class-based object-oriented programming, a constructor (abbreviation: ctor) is a special type of subroutine called to create an object . It prepares the new object for use, often accepting arguments that the constructor uses to set required member variables.

Read more