cpp 中的虚表是一种用于实现多态的机制。当一个类中包含虚函数时,编译器会为这个类创建一个虚函数表,该表包含了类中的所有虚函数的地址。这个表在类的对象中以指针的形式存在,称之为虚指针。在类的构造函数中,会将虚指针指向该类的虚函数表。
当调用虚函数时,会先检查虚指针是否为空,如果不为空则使用虚指针指向的虚函数表中的函数地址来执行函数。如果虚指针为空,则说明该对象不是一个类的对象,或者该类中没有定义虚函数,会导致程序异常。
这样做的好处是,在运行时,能够根据对象的实际类型来调用相应的函数,从而实现多态。