、オブジェクトが 私は移動コンストラクタを理解しようとしている
をコピーする際、通常はコピーコンストラクタが呼び出される その私が動きを提供していない場合に発生するものコンストラクタ、が、私はそれは代わりに私のコピーコンストラクタと呼ばれる移動コンストラクタを追加するときに、ここで
が私のコードです:
#include <iostream>
#include <vector>
using namespace std;
struct A
{
A()
{
cout << "A's constructor" << endl;
}
A(const A& rhs)
{
cout << "A's copy constructor" << endl;
}
A(A&& rhs)
{
cout << "A's move constructor" << endl;
}
};
int main() {
vector<A> v;
cout << "==> push_back A():";
v.push_back(A());
cout << "==> push_back A():" << endl;
v.push_back(A());
return 0;
}
コンパイラはコードを最適化し、より良い方法を選択しようとしますか?
「** move ** constructor」という名前について考えてみて、その実装を見てみましょう。それは*定数*値の参照として引数をとります。あなたは*定数*値から*移動しますか? –
okだから、私はconst rvalue参照から移動できません。私はコードを更新しました。 – linuxD
@linuxD前回の編集でコピーコンストラクタから 'const'を削除したのですか? –