我有函数foo,它以std::string
作为参数:
void foo(std::string);
我放了一个串联字符串:
std::string str_1= "example_str_1";
std::string str_2 = "example_str_2";
foo(str_1+str_2);
这是一种使用std::move
的连接字符串的好方法吗?
foo(std::move(str_1+str_2));
使用std::move
进行连接之间有什么区别吗?
答案 0 :(得分:7)
没有。 std::move
的目的是转换为右值,但str_1+str_2
已经是右值,使move
调用变得多余。
此处需要更大的改进空间是foo
的签名 - 为什么按值std::string
为何?如果它只观察数据,那么真正的胜利就是将foo
更改为void foo(std::string const&)
,或者使用类似于C ++ 17 std::string_view
的内容。
答案 1 :(得分:2)