std::string 作为输出参数或 return 值

std::string as out parameter or return value

这是从函数中获取 std::string 值的正确方法。这里的假设是我正在编写函数和调用者。

std::string foo()
{
     std::string str = "ABC";
     return str;
}

void foo(std::string &str)
{
    str = "ABC";
}

我知道在第一种方法中编译器优化会出现,return 按值计算不会有很大的开销,所以这个方法应该没问题。

第二种方法保证不涉及副本,因此它始终有效。

您会选择哪种方法?

正如评论中所说,现在似乎更喜欢按值使用 return 。我发现这样我的代码更具可读性,因为您可以看到实际上发生了变化。

使用输出参数 foo(str) 时,str 的变化并不明显。

我相信所有主流编译器都足够聪明,可以优化掉任何不必要的复制。

因此,从本质上讲,可读性和清晰度比什么都重要。