设为首页 加入收藏

TOP

c++类对象的内存模型
2014-11-23 19:23:39 来源: 作者: 【 】 浏览:34
Tags:对象 内存 模型

  编辑特别推荐:


  全国计算机等级考试资料下载



  为了探讨C++类对象的内存布局,先来写几个类和函数
  首先写一个基类:
  classBase
  {
  public:
  virtual void f() { cout << "Base::f" <   virtual void g() { cout << "Base::g" << endl;}
  virtual void h() { cout << "Base::h" << endl; }
  intbase;
  protected:
  private:
  };
  然后,我们多种不同的继承情况来研究子类的内存对象结构。
   1.无虚函数集继承
  //子类1,无虚函数重载
  class Child1 : publicBase
  {
  public:
  virtual void f1() { cout << "Child1::f1" <   virtual void g1() { cout << "Child1::g1" << endl;}
  virtual void h1() { cout << "Child1::h1" << endl; }
  intchild1;
  protected:
  private:
  };
  这个子类Child1没有继承任何一个基类的虚函数,因此它的虚函数表如下图:  


  我们可以看出,子类的虚函数表中,先存放基类的虚函数,在存放子类自己的虚函数。
  2.有一个虚函数继承
  //子类2,有1个虚函数重载
  class Child2 : publicBase
  {
  public:
  virtual void f() { cout << "Child2::f" <   virtual void g2() { cout << "Child2::g2" << endl;}
  virtual void h2() { cout << "Child2::h2" << endl; }
  intchild2;
  protected:
  private:
  };


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计算机二级C++辅导:C++回调函数用.. 下一篇C++static关键字使用时的一些技巧

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: