本文为Binhua Liu原创作品。本文允许复制,修改,传递。转载请注明出处。本文发表于2010年6月16日。
原文链接:http://www.cnblogs.com/Binhua-Liu/archive/2010/06/16/1759019.html
前言
本章节是4个课题的最后一个,我们将讨论多重继承情况下,对象内存的布局。阅读本文,请思考下面的问题:当子类从多个基类继承,虚函数指针和成员变量将如何布局?编译器如何进行子类和基类之间类型转换?如果多个基类具有同样的虚函数,子类选择哪个实现来调用?如果子类重写该虚函数,那么它覆盖的是哪个基类的实现呢?
多重继承
我们将分析这样的例子:CFinal类继承自CBasic类和CBasic1类;CBasic类和CBasic1类都定义有虚函数add和minus;CBasic类和CBasic1类都定义有成员变量int i;子类CFinal重写了虚函数add;子类CFinal增加了新的虚函数AVG。类图如下:
代码: