by replicator you probably mean copy constructor, and each class has a default copy constructor which simply assignes by value all the fields. If you want a different one then you need to make one yourself.
about recursion, then the basic recursions probably do return something.
but not necessarly, you might be working on some globals.
destructor needs to dealocate any memory that you allocated inside the class.
which means that if you did Somthing something = new Something() in your constructor,
then you probably need to do delete something; in your destructor, unless you still want to use it, after the object has been destroyed