什么时候使用"删除这个"是否合适?

Run*_*ble 1 c++ memory-management

可能重复:
对象是否应该在C++中删除自己?

在我的应用程序中,我正在创建许多"拥有自己"的对象 - 在创建它们并告知它们"go"之后,只有对象本身才能确定何时应该删除它.

例如,如果我正在编写游戏,我可能会有多个Enemy对象.只有Enemy对象知道什么时候应该死掉.

结果,我最终delete thisEnemy对象内部使用了一些成员函数.这是不好的形式?这是我应该避免的,如果是这样,处理这种情况的正确方法是什么?

bdo*_*lan 5

需要注意的是,如果有太多的成员函数将自删除作为副作用,则在删除对象后很容易意外使用对象的引用.

避免这种情况的一种方法是推迟删除 - 也就是说,将对象放在列表中,并从游戏的主循环中删除刻度开始/结束时该列表上的所有内容.

  • 哦,听起来像垃圾收集!:-) (2认同)
  • @Tanktalus:听起来不像垃圾收集,因为当满足某些逻辑时,对象负责删除自身. (2认同)