C ++ unique_ptr没有调用析构函数

时间:2013-08-20 21:59:47

标签: c++ pointers

我有一个vector unique_ptr个指向名为state的类。当我用向量调用pop_back()时,唯一的指针将从内存中删除(我认为),但它指向的状态对象永远不会被删除。在删除它指向的对象时,或者唯一指针以某种方式不会调用析构函数?我所知道的是,当从向量中移除我的唯一指针时,我的析构函数不会被调用。

这是矢量:

std::vector< std::unique_ptr<State> > mStates;

我试过了:

mStates.pop_back();

删除了唯一的指针,我认为唯一的指针会为我删除状态并调用状态的析构函数,但这并没有发生。顺便说一下,我使用以下方法添加元素:

 mStates.push_back();

1 个答案:

答案 0 :(得分:9)

我修好了。我的问题是我需要一个虚拟析构函数。我甚至不认为虚拟析构函数可以存在。它现在有效。