【发布时间】:2019-09-26 03:13:48
【问题描述】:
我觉得通过引用和移动具有相同的结果。在下面的示例中,移动语义和通过引用传递具有相同的结果。我假设当我们使用移动语义时,所有权被传递给函数,并且主要变量不包含任何值。
#include <iostream>
using namespace std;
void move_function(int&& a)
{
cout<<"a:"<<a<<endl;
a++;
cout<<"a:"<<a<<endl;
}
void function(int& val)
{
val++;
cout<<"val:"<<val<<endl;;
}
int main()
{
int a = 100;
move_function(move(a));
cout<<"main a:"<<a<<endl;
function(a);
cout<<"main a:"<<a<<endl;
return 0;
}
谁能告诉我我的困惑。我对 move 的理解哪里出了问题?
【问题讨论】:
-
移动对原始类型没有任何作用。使用具有明确定义的 move-from 状态的类尝试您的测试,例如
std::unique_ptr。