虚函数表
一个指针数组,该指针指向相应的虚函数(non-static member function)
原理
class(满足相应条件)有唯一一个虚函数表(vtbl)
每个class对象,内部含有一个隐藏数据成员(vptr),指向该class的虚函数表
当调用虚函数时,根据该虚函数的索引(在class virtual中声明的顺序),通过vptr查vtbl,间接调用
pC1->f1() => *(pC1->vptr[i])(pC1);
什么样的class有虚函数表?
定义了虚函数
从有虚函数派生的类
参考
- More Effective C++ Item24