How do I get the member function pointer of a destructor?
这里有人回答说我们无法获取析构函数的函数指针 那么虚拟机制如何在下面的代码中工作。虚拟构造函数是否保存在虚拟表中??如果不是那么虚拟机制在虚拟析构函数的情况下如何工作?
#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;
}
在此代码中,如果我们在基类析构函数中不使用虚拟,则不会调用派生类的析构函数。
最佳答案
当有人说您无法获得指向析构函数的指针时,这意味着没有源代码级别的语法。但在幕后,析构函数仍然是一个普通函数,实际上通常是通过存储在虚拟表中的指针访问的。
换句话说,就是你,无法获得这样的指针。编译器本身获取它没有问题。 Quod licet Iovi non licet bovi。
关于c++ - 虚拟机制在虚拟析构函数的情况下如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324726/