当编译器发现类中有虚函数时,会创建一张虚函数表,将虚函数的函数入口放入虚函数表中,并且在对象中增加一个指针vptr指向虚函数表。当派生类覆盖基类的虚函数时,会将虚函数表中的对应指针进行替换,从而调用派生类覆盖之后的虚函数,从而实现动态绑定。