这是一个可以编译并运行的代码片段:
#include <iostream>
#include <string>
void print_str(const std::string& str) {
std::cout << str << '\n';
}
int main() {
std::string str = "Hello world";
print_str(std::move(str));
}
据我了解,
std::move
在这里没有任何作用。
两个问题:
std::move
在这里没有害处,只是没有效果,对吗?print_str
,并且在通话后不需要 str
,人们可能会说,如果在某个时刻 std::move
将被更改为获得 print_str
,那么 std::string
将会产生积极的效果值。据我了解,
在这里没有效果。 std::move 在这里没有危害,只是没有效果,这是正确的吗?std::move
不,有效果。
str
中的 main()
保持有效,但未指定状态。
无论如何使用它会被认为是好的做法吗?
如果在函数调用后不需要
str
,则移动而不是复制是有意义的。
但是你需要
print_str
就像
void print_str(std::string str) {
std::cout << str << '\n';
}
然后按照你所做的那样移动。