本文介绍了删除没有虚拟析构函数的多态对象时会发生什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在下面的示例中,b
是多态指针类型,其静态类型为Base*
,其动态类型为Derived*
.
In following example, b
is a polymorphic pointer type whose static type is Base*
and whose dynamic type is Derived*
.
struct Base
{
virtual void f();
};
struct Derived : Base
{
};
int main()
{
Base *b = new Derived();
// ...
delete b;
}
在没有虚拟析构函数的情况下删除b
会发生什么?
What happens when b
is deleted without a virtual destructor?
推荐答案
我们不知道.该行为是未定义的.在大多数实际情况下,可能不会调用Derived
的析构函数,但不能保证任何结果.
We don't know. The behavior is undefined. For most actual cases the destructor of Derived
might no be invoked, but nothing is guaranteed.
(重点是我的)
这篇关于删除没有虚拟析构函数的多态对象时会发生什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!