每周500字linux c/c++杂谈每天写1000字

多态是怎么回事

2018-07-30  本文已影响36人  cpp加油站

1. 多态的定义

就是同一个接口,不同的实例有不同的实现方式。

2. 多态的作用

在继承的同时,每一个派生类都有属于自己的独特的方法,实现接口的重用。

3. 多态的实现

具体实现来看,就是父类定义虚函数,子类去实现这个函数,然后使用父类指针去指向子类,再去调用这个函数的时候,就会发生多态。

4. 多态的原理

一个类有虚函数就会产生虚函数表和虚表指针,而多态其实是根据虚函数表来实现的,虚函数表属于整个类,然后每个对象会有一个虚表指针,父类指针指向子类的时候,相当于产生了一个子类对象,那么调用虚函数的时候,首先找到该对象的虚表指针,然后通过虚表指针找到子类虚函数表,进而找到子类函数。
注意:子类只有一个虚表指针,构造的时候是先生成父类的虚表指针,然后子类的虚表指针覆盖掉父类虚表指针。

5. 继承在内存中布局

一个子类在内存中布局是,首先4个字节存放虚表指针,然后存放父类成员变量,接着就是子类成员变量。

上一篇下一篇

猜你喜欢

热点阅读