当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机二级辅导:虚函数与虚继承的思考
发布时间:2009/12/6 10:16:36 来源:城市学习网 编辑:admin

  有这么一个关于虚函数和虚继承的问题,如下:
  class A
  {
  char k[3];
  public:
  virtual void aa();
  };
  class B: public virtual A
  {
  char j[3];
  public:
  virtual void bb();
  };
  class C: public virtual B
  {
  char i[3];
  public:
  virtual void cc();
  };
  请问sizeof(A), sizeof(B), sizeof(C)分别为多少?
  对于A, 我们很清楚的知道,其大小为8。
  对于B,考虑到虚继承和自身的虚函数,我们也可以算出来起大小为8+8+4 = 20对于C,其大小为20+8+4 = 32。
  其中 4为虚继承所占用的指针。
  这个看上去没有什么问题。但是当我把虚继承去掉以后,这里却有了一些变化?
  首先,我猜想了一下,A是8,B是16,C是24。

  有这么一个关于虚函数和虚继承的问题,如下:
  class A
  {
  char k[3];
  public:
  virtual void aa();
  };
  class B: public virtual A
  {
  char j[3];
  public:
  virtual void bb();
  };
  class C: public virtual B
  {
  char i[3];
  public:
  virtual void cc();
  };
  请问sizeof(A), sizeof(B), sizeof(C)分别为多少?
  对于A, 我们很清楚的知道,其大小为8。
  对于B,考虑到虚继承和自身的虚函数,我们也可以算出来起大小为8+8+4 = 20对于C,其大小为20+8+4 = 32。
  其中 4为虚继承所占用的指针。
  这个看上去没有什么问题。但是当我把虚继承去掉以后,这里却有了一些变化?
  首先,我猜想了一下,A是8,B是16,C是24。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved