Of the two approaches, the conversion to use a call-by-reference parameter is generally the one preferred by virtue of the following philosophy-of-language point:
It follows that objects should not be copied merely because a function is called, and objects should not be destroyed merely because a function returns.