0%

C++虚函数

C++虚函数

多态

多态 包含 静态多态 和 动态多态,前者是在编译时确定的,通过函数重载实现。后者是通过虚函数实现的,是运行时类指针或引用和它所绑定的对象不同所体现的。

虚函数 原理: https://www.jianshu.com/p/d07e0ac0ba3c?from=singlemessage 虚函数 实现原理: https://blog.twofei.com/496/ 虚函数总结: https://blog.csdn.net/qq_39477053/article/details/80322260

虚拟函数

虚函数的实现是由两个部分组成的,虚函数指针与虚函数表。

虚函数指针,和表

虚函数指针是确实存在的数据类型,在一个被实例化的对象中,它总是被存放在该对象的地址首位。某一个基类(没有继承别人),它其中有好几个虚函数,那么这几个虚函数的地址组成了一个表。当示例化这个类后,称为该类的对象,那么对象只是新增了一个虚函数指针,该虚函数指针指向了虚表的首地址。对于继承该类的派生类的对象,它也有一个虚函数指针,如果它的派生类的虚函数重写了,那么它的虚表和基类的虚表不同。因此虚函数指针的指向地址也不同。

纯虚函数

纯虚函数 就是 后面加 0 的虚函数,它没有对虚函数进行实现,包含纯虚函数的类称为抽象类,它不能被实例化因为它虚函数没实现,一般用于接口的定义。只有它的派生类并实现了虚函数的 才能实例化。