If you don't supply one, the compiler will write one for you.
It will just do a shallow copy.
You can assign these to be default or delete as well.
However since c++11
If you have a define a copy constructor or destructor it will not generate an assignment operator.
And if you have an assignment operator or destructor the compiler will not generate an copy constructor.
Remember to check to see if you are copying onto yourself. (if this == &rhs)
Remember a=b=c is legal so return a reference to yourself (return *this);
He points out that the copy constructor is called in object creation
MyObj x;
MyObj y(x); // calls the copy constructor
MyObj z=x; // calls the copy constructor as well.
z = x; // this is a call to the assignment operator.