Actually it doesn't. It'll invoke the assignment operator. That's why classes that overload the copy constructor should also overload the assignment operator.
The copy constructor is called in any case where a copy of the class is needed, except the above.
On the other hand, this does call the copy constructor:
EDIT: laserlight beat me to it.Code:class MyClass { public: MyClass(const MyClass& rMyClass); // Copy constructor }; int main() { MyClass a; MyClass b = a;// b is copy constructed from a. MyClass c(a); // alternate syntax for the above. Some say this is less ambiguous. }