我有函数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));
put concatence与std::move
?之间有什么区别吗?
不是.目的std::move
是转换为右值,但str_1+str_2
已经是右值,使得move
调用多余.
这里有更大的改进空间是签名foo
- 为什么它需要一个std::string
值?如果仅观察数据,真正的胜利将被改变foo
到void foo(std::string const&)
,或者使用一个类似于C++ 17的std::string_view
.