I know of the following situations in c++ where the copy constructor would be invoked:
when an existing object is assigned an object of it own class
The following are the cases when copy constructor is called.