虚函数的作用和实现原理

虚函数的作用和实现原理

这里写图片描述
- 虚函数实现原理:虚函数表、虚函数指针
- 虚函数的作用:当调用一个虚函数时,被执行的代码必须和调用函数的对象的动态类型相一致。
- 当一个类声明了虚函数或者继承了虚函数,这个类就会有自己的虚函数表。虚函数表实际上就是一个函数指针数组,有的编译器用的是链表。虚函数表数组中的每一个元素对应一个函数指针指向该类的一个虚函数,同时该类的每一个对象都会包含一个虚函数表指针,虚函数表指针指向该虚函数表的地址。所以当一个类有虚函数的,是占用内存的,占用一个指针大小的内存。
- 虚函数表按照其声明顺序放于虚函数表中。
- 如果子类覆盖了父类的虚函数,将覆盖虚函数表中原来父类虚函数的位置。
- 如果派生类有多个父类,子类的成员函数存放在第一个父类的表中。

猜你喜欢

转载自blog.csdn.net/zhoujy1996/article/details/80573763