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

Sus*_*ers 4 c++ pointers

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

这是矢量:

std::vector< std::unique_ptr<State> > mStates;
Run Code Online (Sandbox Code Playgroud)

我试过了:

mStates.pop_back();
Run Code Online (Sandbox Code Playgroud)

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

 mStates.push_back();
Run Code Online (Sandbox Code Playgroud)

Sus*_*ers 9

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