我的问题很简单:如果我有一个Man类,并且我想定义返回man名的成员函数,我应该选择以下两个变体中的哪个?
第一:
string name();
第二:
void name(/* OUT */ string &name);
第一种变体效率低下,因为它会产生不必要的副本(局部变量->返回值->变量左侧的变量)。
第二个变种看起来很有效,但是让我哭泣
string name;
john.name(name);
而不是简单
string name(john.name());
那么,我应该选择哪种变体?在效率和便利性/可读性之间应该如何取舍?
提前致谢。
name()看起来像一个查询使它const:string name() const;。