#include<iostream>
using namespace std;
class CAA
{
public:
virtual void A()
{
cout << "A()" << endl;
}
virtual void B()
{
cout << "B()" << endl;
}
};
class CBB : public CAA
{
public:
virtual void A()
{
cout << "C()" << endl;
}
virtual void D()
{
cout << "D()" << endl;
}
};
int main()
{
CAA *p=new CBB;
//别名,定义一个返回值空,参数空的函数指针
typedef void (*Pfun)();
Pfun aa=(Pfun) *((int *)*(int *)p+0);//子类覆盖了父类的数值
Pfun bb=(Pfun) *((int *)*(int *)p+1);//指向父类第二个成员函数地址
Pfun cc=(Pfun) *((int *)*(int *)p+2);//指向子类第二个成员函数地址
Pfun dd=(Pfun) *((int *)*(int *)p+3);//代表结束标志
(*aa)();
(*bb)();
(*cc)(); //可以利用父类的指针去依次调用出虚函数列表中底层的D()函数
system("pause");
return 0;
}
C++ 虚函数列表应用
最新推荐文章于 2022-04-06 09:19:33 发布