这是使用 unique_ptr 的代码:
struct Foo{
Foo(){std::cout << "Ctor called\n";}
~Foo(){std::cout << "Dtor called\n";}
void bar(){std::cout << "bar called\n";}
}
int main(){
unique_ptr<Foo> up(new Foo);
{
vector<unique_ptr<Foo>> v;
v.push_back(move(up));
}
up->bar();
return 0;
}
运行的输出是:
Ctor called
Dtor called
bar called
我原以为通话会bar()
失败,因为据我所知,应该会因为ingup
而被破坏。看来我没有正确理解。有人可以带我了解正在发生的事情吗?(g++ 4.7.0)v
move