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