C++虚函数机制

c++运行时多态的实现方法之一是虚函数机制,本文就是研究虚函数实现机制。这是在查看汇编代码时得到的结果,有很多地方考虑不全,希望大家谅解,有兴趣大家可以自己去看汇编代码研究。为了简便,我们基于一个逻辑上的实例来说明,具体的汇编代码和寄存器的问题在此不写出来,真正的情况请大家自己去研究。

下面是类图中国人类继承人类,人类有吃饭、睡觉两个行为

假如在测试代码中构造人类的实例某人和中国人类的实例某中国人,那么如下内存-对象图所示,某人拥有人类的虚函数表指针,某中国人拥有中国人类虚函数表指针,在使用基类的指针调用该类系的虚函数时会根据虚函数表指针找到相应类的虚函数表,再根据相应类虚函数表找到相应类的实现。这个有点拗口,大家对照图看就很好理解了。

C++虚函数机制

引用一句话:一个类一张虚函数表,一个实例一个虚函数表指针。

你可能感兴趣的:(C++,虚函数,多态)