理解move

发布时间 2023-08-28 16:30:10作者: ijpq
#include <initializer_list>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;

struct B {
    int v = 100;
    ~B() { v = 0; }
};

struct A {
    A(B* p) { aa = p; }
    B* aa = nullptr;
    A(A&& obj) { aa = obj.aa; }
    A(const A& obj) { aa = obj.aa; }
};
void f(vector<A>& a) {
    deque<A> q;
    B b;
    A obj(&b);
    q.push_back(obj);
    a.push_back(std::move(q.front()));
    q.pop_front();
}
int main() {
    std::vector<A> a;
    f(a);
    cout << a.begin()->aa->v << endl;
}