#include <iostream>
using namespace std;
struct A
{
A() {}
A(const A &a) {
cout << "copy constructor" << endl;
}
A& operator=(const A &a) {
cout << "assigment operator" << endl;
}
A(A &&a) {
cout << "move" << endl;
}
A& operator=(A &&a) {
cout << "move" << endl;
}
};
struct B {
A a;
};
B func() {
B b;
return b;
}
int main() {
B b = func();
}
这将打印“复制构造函数”。
对于 B 类,移动构造函数和移动赋值运算符应该是自动生成的吗?但是为什么它使用类 A 的复制构造函数而不是移动构造函数呢?