Although the copy constructor and assignment operator perform similar operations, they are used in different contexts.The copy constructor is invoked when you initialize an object with another object:
string first "abc"; string second(first); //copy ctor
On the other hand, the assignment operator is invoked when an already constructed object is assigned a new value:
string second; second = first; //assignment op
Don’t let the syntax mislead you: in the following example, the copy ctor, rather than the assignment operator, is invoked because d2 is being initialized:
Date Y2Ktest ("01/01/2000"); Date d1 = Y2Ktest; /* although = is used, the copy ctor
invoked */