C++面试题目
C++中多继承下的多态机制。
解决方案
一个子类有两个或以上直接父类时称这个继承关系为多继承,这种继承使得一个子类可以继承多个父类的特性。
对于如下有多重继承的实例:
多重继承(无虚函数覆盖的情况)
对应的虚函数模型示意图如下:
1) 每个父类都有自己的虚表。
2) 子类的成员函数被放到了第一个父类(按照父类声明的顺序)的表中。
多重继承(有虚函数覆盖的情况)
如下图所示,子类中覆盖了父类的f()函数。
对应的虚函数模型示意图如下:
三个父类虚函数表中的f()的位置被替换成了子类的函数指针,这样就可以保证调用到f()函数。
内存分配实例
如下代码,class D继承自class A、class B、class C。
在VC6.0下的内存结构: