对象执行std :: move()后会发生什么

时间:2016-12-27 13:29:03

标签: c++ c++11 c++-standard-library

我正在尝试理解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吗

0 个答案:

没有答案