`
nathan09
  • 浏览: 145569 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

VS2005之virtual继承对象模型

 
阅读更多

VS2005virtual继承对象模型

by Nathan.Yu <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" year="2008" month="12" day="11" islunardate="False" isrocdate="False"><span lang="EN-US">2008-12-11</span></chsdate>

空类

类声明:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 180.75pt; HEIGHT: 108pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>

对象定义:

<shape id="_x0000_i1026" style="WIDTH: 231pt; HEIGHT: 80.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png"><font color="#000000" size="5"></font></imagedata></shape>

此时,对象xyza的地址、大小及其内容如下:

对象在堆栈中的分布

可见:

l x的大小为一个字节,其内容初始化为0xcc

l yz的大小为4个字节,初始化为一个指针。

l a的大小为8个字节,初始化为2个指针。这些指针指向一个地址,该地址的内容初始化为0

这个指针是干什么用的呢?不解。。。。。。。。

包含数据成员和虚函数的类

类声明:

对象定义

此时,对象xyza的地址、大小及其内容如下:

对象在堆栈中的分布

(待续。。。。。。)

分享到:
评论

相关推荐

    深度探索模C++对象模型PDF

    简单对象模型(A Simple Object Model) 表格驱动对象模型(A Table-driven Object Model) C++对象模型(Th e C++ Object Model) 对象模型如何影响程序(How the Object Model Effects Programs) 1.2 关键词所...

    深度探索C++对象模型 超清版

    简单对象模型(A Simple Object Model) 表格驱动对象模型(A Table-driven Object Model) C++对象模型(Th e C++ Object Model) 对象模型如何影响程序(How the Object Model Effects Programs) 1.2 关键词所...

    C++ 多重继承和虚拟继承对象模型、效率分析

    通过带有虚函数的单一继承我们可以清楚的理解继承的概念、对象模型的分布机制以及动态绑定的发生,即可以完全彻底地理解多态的思想。为了支持多态,语言实现必须在时间和空间上付出额外的代价(毕竟没有免费的晚餐,...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    本书重点:探索“对象导向程序所支持的C++对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序...

    C++虚继承之类的实际大小

    这几天翻箱底将去年买的《深度探索C++对象模型》这本NB的书拿出来看看,The Semantics of Data这一章中发现了一个过去一直没有想到的一个问题,问题如下  输出下面class的大小: class X{}; class Y : public ...

    软件工程简答题

    静多态可以通过模板和函数重载来实现,动多态则是通过继承、虚函数(virtual)、指针来实现 什么是类聚性?内聚性有哪些类型?哪种内聚是最高程度的内聚? 答:内聚性指的是在一个子程序中,各种操作之间互相联系的...

    c.c++找工作面试重点结构图-mindmanager

    在虚继承体系中的通过virtual继承而来的基类 继承子类与父类关系 具体化 类的层次通常反映了客观世界中某种真实的模型。在这种情况下,不难看出:基类是对若干个派生类的抽象,而派生类是基类的具体化。基类抽取...

    传智播客_C++基础课程讲义_v1.0.7

    3.3.2继承中的对象模型 6 3.3.3继承中的构造析构调用原则 6 3.3.4继承与组合混搭情况下,构造和析构调用原则 6 3.3.5继承中的同名成员变量处理方法 6 3.3.6派生类中的static关键字 6 3.4多继承 6 3.4.1多继承的应用 ...

    Visual C++实践与提高-COM和COM+篇『PDF』

    7.4.1 ADO对象模型和基本编程模型 7.4.2 在Visual C++中使用ADO 7.4.2.1 使用#import指令 7.4.2.2 利用ClassWizard加载ADO对象类 7.4.2.3 通过COM API使用ADO 7.4.3 创建使用ADO的代码组件——例程ADOSamp 7.4.4 ...

    C++ Primer第四版【中文高清扫描版】.pdf

    本书的前言阐述了 第4版和前一版的不同之处。 【目录信息】 第1章 快速入门 1 1.1 编写简单的C++程序 2 1.2 初窥输入/输出 5 1.2.1 标准输入与输出对象 5 1.2.2 一个使用IO库的程序 5 1.3 关于注释 8 1.4 控制结构...

    Java版水果管理系统源码-c-plus-Interview:c-plus-面试

    C++多重继承的对象模型?菱形继承的对象模型? C++ 多态 dll 多态的两种方式 多态如何实现 C++ 虚函数 虚函数的实现原理,子类构造析构函数的调用顺序 虚函数怎么实现的 虚函数机制 虚函数的执行和类成员函数的执行...

    JAVA基础课程讲义

    JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个...

    C# 语言规范 版本5.0中文.pdf

    C#(读作“See Sharp”)是一种简洁、现代、面向对象且类型安全的编程语言。 C# 起源于 C 语言家 族,因此,对于 C、 C++ 和 Java 程序员,可以很快熟悉这种新的语言。 C# 已经分别由 ECMA International 和 ISO/IEC...

    C#语言规范4

    所有 C# 类型(包括诸如 int 和 double 之类的基元类型)都继承于一个唯一的根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C# 同时支持用户...

    C# 4.0语言规范

    所有 C# 类型(包括诸如 int 和 double 之类的基元类型)都继承于一个唯一的根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C# 同时支持用户...

    亮剑.NET深入体验与实战精要2

    5.1.2 趣味理解ADO.NET对象模型 202 5.1.3 进水笼头——建立Connection 204 5.1.4 抽水机——Command 206 5.1.5 输水管——DataAdapter 209 5.1.6 输水管——DataReader 210 5.1.7 随用随关,释放资源 212 5.1.8 ...

    亮剑.NET深入体验与实战精要3

    5.1.2 趣味理解ADO.NET对象模型 202 5.1.3 进水笼头——建立Connection 204 5.1.4 抽水机——Command 206 5.1.5 输水管——DataAdapter 209 5.1.6 输水管——DataReader 210 5.1.7 随用随关,释放资源 212 5.1.8 ...

    国内外主流的三维GIS软件

     介绍:IMAGIS三维可视地理信息系统是一套以数字正射影像(DOM)、数字地面模型(DEM)、数字线划图 (DLG)和数字栅格图 (DRG)作为处理对象的 GIS 系统。结合了三维可视化技术与虚拟现实技术,完全再现管理环境...

    java编程基础,应用与实例

    1.2.3 Java Virtual Machine(JVM) 2 1.2.4 面向对象的程序设计语言 2 1.2.5 线程(thread) 2 1.2.6 垃圾回收机制(garbage collection) 2 1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard ...

Global site tag (gtag.js) - Google Analytics