我正在尝试理解c ++ 11新引入的std::move()
函数。在以下代码段中:
typedef struct
{
int i, j;
} TwoNumbers;
void foo(TwoNumbers&& a)
{
}
int main ()
{
TwoNumbers A{0, 1};
cout << A.i << A.j << endl;
foo(move(A));
cout << A.i << A.j << endl;
return 0;
}
如何输出如下?
ayan@ayan-Aspire-E1-571:~/Desktop$ g++ main.cpp -o main -std=c++11
ayan@ayan-Aspire-E1-571:~/Desktop$ ./main
01
01
我的想法:
我认为std::move()
会将我的object A
转换为右值,并将所有权转移到函数foo()
,我将不会再将其object A
初始化州。但事实并非如此。的 WHY吗