7

state というクラスを指すvectorofがあります。unique_ptrベクトルで呼び出すpop_back()と、一意のポインターはメモリから削除されますが (私は思う)、それが指している状態オブジェクトは決して削除されません。それまたは一意のポインターのいずれかが、それが指すオブジェクトを削除するときに、どういうわけかデストラクタを呼び出さないのですか? 私が知っているのは、一意のポインターがベクターから削除されたときにデストラクタが呼び出されないことだけです。

ベクトルは次のとおりです。

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

私は試した:

mStates.pop_back();

これにより一意のポインタが削除され、一意のポインタが状態を削除して状態のデストラクタを呼び出すと思いましたが、そうはなりませんでした。ところで、次を使用して要素を追加します。

 mStates.push_back();
4

1 に答える 1