C++虚表 多态的基本概念1.多态是指允许一个接口被多种类型的对象使用通常通过继承和重写实现2.在C中多态的实现依赖于虚函数多态的实现1.父类提供数据成员和成员函数子类继承并重写父类的函数2.函数参数为父类指针可以传递父类对象或子类对象3.当传递父类对象时调用父类的函数当传递子类对象时调用子类的函数虚函数与多态性1.实现多态性的前提是使用虚函数2.普通函数不能实现多态性因为它们的函数地址在编译时已经确定3.虚函数在运行时动态绑定根据实际对象类型调用相应的函数虚函数的间接调用1.虚函数的调用形式为间接调用2.编译器为虚函数生成间接调用的汇编代码3.间接调用时函数地址存储在对象的虚表中根据虚表地址进行调用虚表与对象大小1.含有虚函数的类对象会增加四个字节2.这四个字节用于存储虚表的地址3.虚表存储了函数的地址用于实现多态性虚表的结构与内容1.虚表是一个包含函数地址的表2.虚表中存储的函数地址根据实际对象类型进行动态绑定3.虚表的地址存储在对象的最开始位置虚表的动态绑定1.当调用虚函数时根据对象的虚表地址进行动态绑定2.虚表中的函数地址根据实际对象类型进行选择3.实现了多态性的正确调用