我的问题很简单:如果我有一些类 Man 并且我想定义返回人名的成员函数,我应该更喜欢以下两种变体中的哪一种?
第一的:
string name();
第二:
void name(/* OUT */ string &name);
第一个变体有点低效,因为它会产生不必要的副本(局部变量 -> 返回值 -> 赋值左侧的变量)。
第二种变体看起来很有效,但写起来让我哭了
string name;
john.name(name);
而不是简单
string name(john.name());
那么,我应该更喜欢什么变体,效率和便利性/可读性之间的适当权衡是什么?
提前致谢。