这里有人回答说我们无法获得析构函数的函数指针, 那么虚拟机制在下面的代码中是如何工作的。虚拟构造函数是否保存在虚拟表中?如果不是,那么在虚拟析构函数的情况下虚拟机制如何工作?
#include<stdio.h>
class Base
{
public:
Base()
{
printf("C-Base\n");
}
virtual ~Base()
{
printf("Base\n");
}
};
class Derived:public Base
{
public:
Derived()
{
printf("C-DErived\n");
}
~Derived()
{
printf("DErived\n");
}
};
int main()
{
Base *b=new Derived();
delete b;
}
在这段代码中,如果我们在基类 Destructor 中不使用 virtual,则不会调用派生类的析构函数。