关于std::move的一个问题
#include <bits/stdc++.h>using namespace std;
class A {
public:
int a, b;
A(): a(0), b(0) {}
A(int a, int b): a(a), b(b) {}
void foo() {
cout << a << " " << b << endl;
}
};
int main()
{
A a(5, 6);
a.foo();
A b = std::move(a);
a.foo();
b.foo();
return 0;
}
按理说,这里对象a的数据应该移动到对象b上了才对,为什么对象a中的值仍为5和6, 而不是0和0呢?
#include <bits/stdc++.h>
using namespace std;
class A {
public:
int a, b;
A(): a(0), b(0) {}
A(int a, int b): a(a), b(b) {}
A(A &&rhs) {
this->a = rhs.a;
this->b = rhs.b;
rhs.a = rhs.b = 0;
}
void foo() { cout << a << " " << b << endl; }
};
int main() {
A a(5, 6);
a.foo();
A b = std::move(a);
a.foo();
b.foo();
return 0;
}
C++ 的拷贝构造函数真的很好玩,多样化。笔记中{:10_254:}
页:
[1]