作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Projectile
是 Node
的子类。我想要调用 Projectile
析构函数。
注意:在现实场景中,我有一个 Node*
列表,它们是 Projectile
、Player
或 Enemy
,每个都有自己的析构函数。
Node
在.h 文件
中没有指定的析构函数(我假设它使用默认析构函数。)
Node* p = new Projectile();
delete(p); //Projectile destructor is never called
最佳答案
首先,从您的问题中可以很清楚地看出,Projectile
是 Node
的子类(请参阅 this Wikipedia entry)。
如果你有一个像 Node
这样的类是为子类化而构建的,那么你应该确保它的析构函数是虚拟的:
class Node
{
...
virtual ~Node();
};
这将导致编译器在您删除`指向父类(super class)的指针时调用适当的类析构函数。
(另一个问题是它是否应该是纯虚拟的。)
我是一名优秀的程序员,十分优秀!