クラスのオブジェクトを返す関数はやめるべきですか?

例えば、文字列 std::string を返す関数は、何も考えないで書くと、
std::string hoge() { return "hoge"; }
になると思うんですが、
void hoge(std::string &dst) { dst = "hoge"; }
という感じで返してるソースを見かけました。
後者の方が効率的なんですかね