#include <iostream>
using namespace std;
class Grail
{
public:
virtual void _A()
{
cout<<"Grail::_A()"<<endl;
}
virtual void _B()
{
cout<<"Grail::_B()"<<endl;
}
virtual void _C()
{
cout<<"Grail::_C()"<<endl;
}
};
int main()
{
typedef void (*pFun)();//函数指针。
Grail g;
for(int i=0;i<3;i++)
{
pFun pfun = (pFun)*((int *)(*(int *)(&g))+i);
pfun();//取得虛表对应的函数。
}
}
心得:C++ Class 的完整virtual function 在编译时期就固定下来了,程序没有办法在执行期间动态的增加或者取代其中莫一个。所以虚拟调用操作得以有做快的派送结果,付出的成本则是执行期的弹性。
c++中虛表函数
最新推荐文章于 2023-04-07 15:54:33 发布