「こんにちは!」を出力するメソッドを持つFoobar
クラスがあります。sayHello()
次のコードを書くと
vector<unique_ptr<Foobar>> fooList;
fooList.emplace_back(new Foobar());
unique_ptr<Foobar> myFoo = move(fooList[0]);
unique_ptr<Foobar> myFoo2 = move(fooList[0]);
myFoo->sayHello();
myFoo2->sayHello();
cout << "vector size: " << fooList.size() << endl;
出力は次のとおりです。
Well hello there!
Well hello there!
vector size: 1
なぜこれが機能するのか混乱しています。fooList[0]
初手でヌルにならないの?なぜ機能myFoo2
するのですか?
Foobar
外観は次のとおりです。
class Foobar
{
public:
Foobar(void) {};
virtual ~Foobar(void) {};
void sayHello() const {
cout << "Well hello there!" << endl;
};
};