以下两个功能中什么是好的编程习惯:
此:
std::string buildvalue(const std::string &in) {
std::string out;
out = // Do some calulation bases on input
return out;
}
或者这个:
void buildvalue(const std::string &in, std::string &out) {
out = // Do some calulation bases on input
}
谨慎使用2函数是调用者可以传递非空字符串。有什么要注意的地方。
答案 0 :(得分:0)
在第一种情况下,编译器将能够优化返回值。它将返回值放在调用函数中。例如,
std::string foo(...) { ... }
// ...
std::string result = foo(...);
编译器会将foo返回值放在结果点上。 它使我们免于引用参数和过早的变量声明。 略C ++ 17: 可以使用const std :: string&代替std :: string_view。在以下情况下,创建临时std :: string的优点是可选的:
void foo(const std::string&);
// ...
foo("hello world"); // here will be create std::string object
使用std :: string_view(c ++ 17)
void foo(std::string_view);
// ...
foo("hello world"); // more productive
+ std :: string具有运算符std :: string_view,将其引向std :: string_view