【发布时间】:2012-06-23 06:16:54
【问题描述】:
这是一个使用 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() 的调用失败,因为据我了解,up 应该被v 破坏,因为moveing。看来我没有正确理解。有人可以带我了解正在发生的事情吗? (g++ 4.7.0)
【问题讨论】:
-
未定义的行为未定义为显示失败。
标签: c++ c++11 scope unique-ptr