#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のコピーコンストラクターを使用し、移動コンストラクターを使用しないのですか?