使用类似代码的不同行为

时间:2014-01-25 15:45:56

标签: c++11 move-semantics

#include <vector>
#include <iostream>
using namespace std;

struct A
{
    vector<int> v;
};

void f0(const A&& a0)
{
    cout << &a0.v[0] << endl;
    A a1{ move(a0.v) };
    cout << &a1.v[0] << endl << endl;;
}

void f1()
{
    A a0{ vector<int>(10) };
    cout << &a0.v[0] << endl;
    A a1{ move(a0.v) };
    cout << &a1.v[0] << endl;
}

int main()
{
    f0(A{ vector<int>(10) });
    f1();
    return 0;
}

我无法理解为什么在第一种情况下地址不同但在第二种情况下地址是相同的。

0 个答案:

没有答案