类类型
来源:互联网 发布:卫宁软件科技有限公司 编辑:程序博客网 时间:2024/05/18 20:51
接下来讨论的类类型内部层次结构只适用于Win32平台。
在Win32平台,一个类类型值被存储为32位指针指向类的一个实例,这个实例就叫做对象。一个对象的内部数据格式类似于记录。对象的字段被存储按照声明排列成相邻变量的序列。字段总是对齐的,符合未压缩的记录类型。从父类继承的任何字段被存储在子类定义的新字段之前。
每个对象开始的4字节字段是一个指针指向类的虚拟方法表(VMT)。每个类有一张完整的VMT(不是每个对象)。不同的类类型 ,不管如何相似 ,绝不共享同一VMT。VMT由编译器自动生成,永远不会由程序直接操作。VMT的指针,由自动储存在构造函数生成的对象中,并且永远不会由程序直接操作。
下表描述了一张VMT的结构。在偏移的正数部分,VMT由每个用户在类类型中定义的虚拟方法的32位方法指针列表组成。该结构与C++v-table和com兼容。偏移的负数部分,VMT包含一些字段指向Delphi的内部实现。应用程序应该使用在Tobject中定义的方法来获取这个信息。
Virtual method table layout (Win32 Only)
Offset
Type
Description
-76
Pointer
pointer to virtual method table (or nil)
-72
Pointer
pointer to interface table (or nil)
-68
Pointer
pointer to Automation information table (or nil)
-64
Pointer
pointer to instance initialization table (or nil)
-60
Pointer
pointer to type information table (or nil)
-56
Pointer
pointer to field definition table (or nil)
-52
Pointer
pointer to method definition table (or nil)
-48
Pointer
pointer to dynamic method table (or nil)
-44
Pointer
pointer to short string containing class name
-40
Cardinal
instance size in bytes
-36
Pointer
pointer to a pointer to ancestor class (or nil)
-32
Pointer
pointer to entry point of SafecallException method (or nil)
-28
Pointer
entry point of AfterConstruction method
-24
Pointer
entry point of BeforeDestruction method
-20
Pointer
entry point of Dispatch method
-16
Pointer
entry point of DefaultHandler method
-12
Pointer
entry point of NewInstance method
-8
Pointer
entry point of FreeInstance method
-4
Pointer
entry point of Destroy destructor
0
Pointer
entry point of first user-defined virtual method
4
Pointer
entry point of second user-defined virtual method
- 类类型
- 类类型
- 类类型
- 类类型
- 类类型
- C# 引用类型-类类型
- Hibernate自定义类型 -类属性类型与数据库类型转换
- C#中结构类型和类类型
- 基本类型对应的包装类类型
- scala类型系统:1) 类型与类
- C# 结构体类型和类类型
- scala类型系统:1) 类型与类
- 对象与类类型
- 类与类型
- 类类型的使用
- 类的常类型
- 转换与类类型
- 转换与类类型
- WIN32上的多线程
- Queue-C#数组构建队列
- C++类型转换运算符的使用方法
- 一道有趣的C語言題目!
- plsql常用命令大全 sql
- 类类型
- oracl常用的数据操纵语句,oracl命令大全
- Oracle常用Script
- 万有引力
- 如何利用导数推导向心加速度公式? + 开普勒 第三定律的推导过程
- servlet.getServletContext()和getServletConfig(),什么意思和用法
- TWaver2.5 Released!电信拓扑Web解决方案
- Application, Session, Cookie, Viewstate, Cache对象用法和区别
- 开普勒三大定律