C++多态
C++多态的实现方式是虚函数表和虚表指针。
其中,C++编译器为每个类内含有virtual函数的类生成一个虚函数表,基类生成基类的虚函数表,虚函数表中包含类内所有虚函数的函数指针,即函数指针数组。
C++调用虚函数时通过虚函数指针来间接调用。动态绑定有点类似于函数指针,当函数指针赋予不同值时就调用不同的函数。虚函数指针则是当赋予不同值时调用不同的函数组。
C++编译器为每个含virtual的类对象添加一个虚函数表指针,在调用对象的构造函数的时候初始化该虚函数表指针。在构造子类的时候需要先构造基类,所以在初始化虚函数表的指针时先用基类的虚函数表地址再用子类的虚函数表地址初始化该虚函数指针。
浙公网安备 33010602011771号