我的问题很简单:如果我有一些类Man,并且我想定义返回man名字的成员函数,我应该选择以下两个变体中的哪一个?
首先:
string name();
第二:
void name(/* OUT */ string &name);
第一个变体效率不高,因为它复制了不必要的副本(赋值左侧的局部变量、返回值、->变量)。
第二个变体看起来相当有效,但它让我忍不住想写
string name;
john.name(name);
而不是简单
string name(john.name());
那么,我应该选择哪种变体,在效率和便利性/可读性之间的适当权衡是什么?
提前谢谢。
https://stackoverflow.com/questions/10553091
复制相似问题