Projectile
是的子类Node
。我希望Projectile
调用析构函数。
注:在实际生活的场景,我有一个列表Node*
是Projectile
,Player
或者Enemy
,每个都有自己的析构函数。
Node
在中没有指定的析构函数.h file
(我假设它使用默认析构函数。)
Node* p = new Projectile();
delete(p); //Projectile destructor is never called
首先,它似乎从你的问题是很清楚的Projectile
是子类的Node
(参见本百科词条)。
如果您有一个Node
为子类构建的类,则应确保其析构函数是虚拟的:
class Node
{
...
virtual ~Node();
};
这将导致编译器调用适当的类s destructor when you
delete指向超类的指针。
(另一个问题是它是否应该是纯虚拟的。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句