C++面试题-多继承下的多态机制

C++面试题目

C++中多继承下的多态机制。

解决方案

一个子类有两个或以上直接父类时称这个继承关系为多继承,这种继承使得一个子类可以继承多个父类的特性。

对于如下有多重继承的实例:

多重继承(无虚函数覆盖的情况)

C++面试题-多继承下的多态机制

对应的虚函数模型示意图如下:

C++面试题-多继承下的多态机制

1) 每个父类都有自己的虚表。

2) 子类的成员函数被放到了第一个父类(按照父类声明的顺序)的表中。

多重继承(有虚函数覆盖的情况)

如下图所示,子类中覆盖了父类的f()函数。

C++面试题-多继承下的多态机制

对应的虚函数模型示意图如下:

C++面试题-多继承下的多态机制

三个父类虚函数表中的f()的位置被替换成了子类的函数指针,这样就可以保证调用到f()函数。

内存分配实例

如下代码,class D继承自class A、class B、class C。

C++面试题-多继承下的多态机制

C++面试题-多继承下的多态机制

在VC6.0下的内存结构:

C++面试题-多继承下的多态机制


分享到:


相關文章: