父类指针指向子类对象的虚函数表在编译时期与运行时期发生了哪些变化?
时间: 2024-05-23 07:12:54 浏览: 133
C++虚函数表解析
5星 · 资源好评率100%
在编译时期,编译器会根据父类指针的声明类型来确定虚函数表的地址,并将其存储在父类指针中。这个地址指向的是父类的虚函数表,也就是说,编译时期确定的虚函数调用地址都是父类的虚函数地址。
在运行时期,当父类指针指向子类对象时,编译器会根据对象的实际类型(即子类类型)来重新计算虚函数表地址,并将其存储在父类指针中。这个地址指向的是子类的虚函数表,也就是说,运行时期确定的虚函数调用地址都是子类的虚函数地址。
因此,当使用父类指针调用虚函数时,会根据运行时期确定的虚函数表地址来调用相应的虚函数,从而实现了多态性。这也是C++中面向对象编程的一个重要特性。
阅读全文