虚函数表

C++的虚函数是一种多态技术,试图用不变的代码实现可变的代码。

多态技术分为两类:

1.静态多态:函数重载和运算符重载

2.动态多态:虚函数

虚函数表

每个含有虚函数的类中有一张虚函数表(vtbl),表中每一项是一个虚函数的地址。当类实例化对象时,表会分配到实例的内存中。

class Base
{
  virtual void f(){cout<<"base::f"<<endl;};
  virtual void g(){cout<<"base::g"<<endl;};
  virtual void h(){cout<<"base::h"<<endl;};
};
void main()
{
  Base b;
}

VC里面的虚函数表如图:

在此输入图片描述

这里比较奇怪的是地址不连续。

Reference

[1].http://blog.csdn.net/haoel/article/details/1948051/

你可能感兴趣的:(虚函数表)