Copy Constructors
A copy constructor is a constructor that takes as an argument the type of the constructor, e.g. molecule::molecule(molecule &x)
complex c1; // normal constructor called
complex c2 = c1; // copy constructor needed
This is a special case only because a default copy constructor is provided by the compiler if you don’t write one that simply does a shallow copy of the object (copies pointers)