on line 16 you set 'a' equal to a different value, the line creates a temporary unnamed object with the value of 2 and sets 'a' equal to the object using a default overloaded operator supplied by c++. Once the object is used then the compiler destroys the object. Literally the same answer as coder777, just more in depth