c++继承和组合,多态,虚函数(c++后期绑定的本质)

组合和继承,实现了代码的可扩展性和兼容性。
多态是在虚函数上得到了支持。
多态的原理,函数的调用绑定:
把函数的调用和函数体相关联称为捆绑。当捆绑是在程序运行之前完成的,称为早期捆绑。c语言只支持早期绑定。晚期捆绑,对象通过自身得到类的信息,然后找到合适的函数体,执行调用,这个过程是后期绑定,或者动态绑定。
c++是如何实现晚期绑定的:
当一个类的函数是虚函数的时候,这个类就有一个静态函数指针来绑定这个类的函数体的具体实现了,而这个指针这个类产生的对象公用的。
编译器在编译的时候,发现如果是虚函数的调用的时候,那么自行处理,调用对象指向具体虚函数的指针来执行。
所以后期绑定本质上是通过子类各自有一个指针指向自己的具体函数体来实现,所谓后期绑定。
这里写图片描述

instrucment 是一个父类,wind percussion string brass 是各自子类,都有一个隐藏指针vptr,来指针各自函数体的位置

猜你喜欢

转载自blog.csdn.net/yinghonghui/article/details/82721426