class A
{
public:
A(){
printf("A()\n");
};
~A(){
printf("~A()\n");
}
virtual void vir()
{
printf("vir ");
}
};
只要类中有虚函数,那么编译器一定会给分配默认的构造函数,在构造函数内部,会把this指针的第一个4字节数据修改为虚表地址 虚表地址是一个指针 指向了虚表 虚表中存放的是虚函数的地址
虚表存放的是虚函数地址
如果想要间接调用虚表中的函数 必须用类指针或者引用的形式,要不然不会间接调用,而是直接call 虚函数名