there's a 100 answers to "which way is best", and the only correct ones include "it depends"
there's a lot written about it,
you should be able to find by searching a bit,
in the mean time, the copy constructor above is a minimally invasive way to get a copy,