gpt4 book ai didi

C++:调用了错误的析构函数

转载 作者:太空狗 更新时间:2023-10-29 20:02:48 26 4
gpt4 key购买 nike

ProjectileNode 的子类。我想要调用 Projectile 析构函数。

注意:在现实场景中,我有一个 Node* 列表,它们是 ProjectilePlayerEnemy ,每个都有自己的析构函数。

Node.h 文件 中没有指定的析构函数(我假设它使用默认析构函数。)

    Node* p = new Projectile();
delete(p); //Projectile destructor is never called

最佳答案

首先,从您的问题中可以很清楚地看出,ProjectileNode子类(请参阅 this Wikipedia entry)。

如果你有一个像 Node 这样的类是为子类化而构建的,那么你应该确保它的析构函数是虚拟的:

class Node
{
...
virtual ~Node();
};

这将导致编译器在您删除`指向父类(super class)的指针时调用适当的类析构函数。



(另一个问题是它是否应该是纯虚拟的。)








关于C++:调用了错误的析构函数,我们在Stack Overflow上找到一个类似的问题:

https://stackoverflow.com/questions/35169481/




26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com