c++多态及实现原理

https://www.cnblogs.com/cxq0017/p/6074247.html

通过虚函数实现,普通函数在编译过程中即确定了函数的地址,虚函数的函数地址是在程序运行的时候确定的,有虚函数的类在对象初始化的时候会生成一个虚函数表和虚函数指针,虚函数指针指向此类的虚函数表,所以当一个对象调用虚函数时,过程是先通过这个对象的虚函数指针找到虚函数表,然后在虚函数表中找到具体需要调用的虚函数。

 

虚函数表是针对类的,虚函数指针是针对对象的。

 

跟OC类似,OC是在对象初始化的时候指定isa指针指向的类对象,而c++是在对象初始化的时候指定虚函数指针指向的类的虚函数表,都是在程序运行时才找到对应的方法。

猜你喜欢

转载自www.cnblogs.com/yibinpan/p/10540525.html