1. 多态的定义
就是同一个接口,不同的实例有不同的实现方式。
2. 多态的作用
在继承的同时,每一个派生类都有属于自己的独特的方法,实现接口的重用。
3. 多态的实现
具体实现来看,就是父类定义虚函数,子类去实现这个函数,然后使用父类指针去指向子类,再去调用这个函数的时候,就会发生多态。
4. 多态的原理
一个类有虚函数就会产生虚函数表和虚表指针,而多态其实是根据虚函数表来实现的,虚函数表属于整个类,然后每个对象会有一个虚表指针,父类指针指向子类的时候,相当于产生了一个子类对象,那么调用虚函数的时候,首先找到该对象的虚表指针,然后通过虚表指针找到子类虚函数表,进而找到子类函数。
注意:子类只有一个虚表指针,构造的时候是先生成父类的虚表指针,然后子类的虚表指针覆盖掉父类虚表指针。
5. 继承在内存中布局
一个子类在内存中布局是,首先4个字节存放虚表指针,然后存放父类成员变量,接着就是子类成员变量。