It doesn't. It uses a built-in assignment operator instead.
No, it uses the compiler provided copy constructor.
In that case the compiler is allowed to also use the copy-constructor, instead of a call to the default constructor followed by a call to the assignment operator. So you can't actually say that it will call the assignment operator. It's compiler dependent.
I do not have a copy of the C++ Standard with me at the moment, but I believe that it is not compiler dependent: this syntax means an implicit invocation of the copy constructor. If you declare the copy constructor explicit, then one must use:
Code:
SomeObject object2(object1);
instead of:
Code:
SomeObject object2 = object1;