当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>c++类对象的内存模子</b>[VC/C++编程]

赞助商链接



  本文“<b>c++类对象的内存模子</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

C++类对象内存构造

首先介绍一下C++中有担当关系的类对象内存的筹划:在C++中,假如类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中.之后是类中的成员变量的内存数据.

关于子类,最开始的内存数据记录着父类对象的拷贝(包含父类虚函数表指针和成员变量).之后是子类自己的成员变量数据.

关于子类的子类,也是一样的原理.但是无论担当了多少个子类,对象中始终只有一个虚函数表指针.

为了探究C++类对象的内存筹划,先来写几个类和函数

首先写一个基类:

class Base
{
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }
int base;
protected:
private:
};

然后,我们多种差别的担当情形来研究子类的内存对象构造.

1. 无虚函数集担当

//子类1,无虚函数重载
class Child1 : public Base
{
public:
virtual void f1() { cout << "Child1::f1" << endl; }
virtual void g1() { cout << "Child1::g1" << endl; }
virtual void h1() { cout << "Child1::h1" << endl; }
int child1;
protected:
private:
};

这个子类Child1没有担当任何一个基类的虚函数,因此它的虚函数表以下图:

我们可以看出,子类的虚函数表中,先存放基类的虚函数,在存放子类自己的虚函数.


  以上是“<b>c++类对象的内存模子</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .