现在的位置: 首页 > 综合 > 正文

C++内存分析(四)

2014年01月10日 ⁄ 综合 ⁄ 共 824字 ⁄ 字号 评论关闭

document授权声明

    本文为Binhua Liu原创作品。本文允许复制,修改,传递。转载请注明出处。本文发表于2010年6月16日。

原文链接:http://www.cnblogs.com/Binhua-Liu/archive/2010/06/16/1759019.html 

document 前言

    本章节是4个课题的最后一个,我们将讨论多重继承情况下,对象内存的布局。阅读本文,请思考下面的问题:当子类从多个基类继承,虚函数指针和成员变量将如何布局?编译器如何进行子类和基类之间类型转换?如果多个基类具有同样的虚函数,子类选择哪个实现来调用?如果子类重写该虚函数,那么它覆盖的是哪个基类的实现呢?

document 多重继承

    我们将分析这样的例子:CFinal类继承自CBasic类和CBasic1类;CBasic类和CBasic1类都定义有虚函数add和minus;CBasic类和CBasic1类都定义有成员变量int i;子类CFinal重写了虚函数add;子类CFinal增加了新的虚函数AVG。类图如下:

 

image

    代码:

class CBasic
{
  public:
      CBasic()
      {
          Array=new int[2];
      }
      int i;
      int *Array;
      virtual int add(int a,int b)
      {
          return a+b;
      }
      virtual  int minus(int a,int b)
      {
          return a-b;
      }
     void HelloWorld()
     {
         cout<<"hello
world"
<<endl;
     }
};
 
class CBasic1
{
public:
      virtual int add(int a,int b)
      
【上篇】
【下篇】

抱歉!评论已关闭.