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 的变化并不明显。
我相信所有主流编译器都足够聪明,可以优化掉任何不必要的复制。
因此,从本质上讲,可读性和清晰度比什么都重要。
这是从函数中获取 std::string 值的正确方法。这里的假设是我正在编写函数和调用者。
std::string foo()
{
std::string str = "ABC";
return str;
}
或
void foo(std::string &str)
{
str = "ABC";
}
我知道在第一种方法中编译器优化会出现,return 按值计算不会有很大的开销,所以这个方法应该没问题。
第二种方法保证不涉及副本,因此它始终有效。
您会选择哪种方法?
正如评论中所说,现在似乎更喜欢按值使用 return 。我发现这样我的代码更具可读性,因为您可以看到实际上发生了变化。
使用输出参数 foo(str) 时,str 的变化并不明显。
我相信所有主流编译器都足够聪明,可以优化掉任何不必要的复制。
因此,从本质上讲,可读性和清晰度比什么都重要。