"删除此"到一个用std :: shared_ptr分配的对象?

Jes*_*eTG 4 c++ memory-management shared-ptr c++11

我知道,delete this无论何时new使用传统指针分配内容,都可以在C++中说出来.事实上,我也知道如果你仔细处理它是很好的做法.我可以有一个物体说它delete this是否由一个人持有std::shared_ptr?这应该叫析构函数,对吗?为了给你一个想法,我正在做一个船可以发射导弹的游戏,我想让导弹自己删除.

Cat*_*lus 13

不,它不安全,对象的生命周期由持有者决定shared_ptr,因此对象本身无法决定是否要死.如果你这样做,你会在上次shared_ptr死亡时获得双重删除.我能提供的唯一解决方案是"重新思考你的设计"(你可能shared_ptr首先不需要,导弹可能是值或汇集对象).