Delphi 类与对象内存结构浅析(下)
对象空间
内存结构
对象的内存结构是固定的,对象创建完成后就无法改变。它主要存储了对象直属类的地址(等价于类的VMT),对象本身的成员数据,对象的接口方法表地址。结构如图所示:
说明:若类未声明接口,则对象空间不存储接口方法表地址。
类空间与对象空间的关系
类空间与对象空间:
示例:分析对象的基本内存结构
代码:
type
IMyInterface = interface(IUnknown)
['{06F3EA2C-E9C2-410E-97BE-D88ADF775EC3}']
procedure InterfaceMethod1;
end;
TMyObject = class(TInterfacedObject,IMyInterface)
private
FField1: Integer;
FField2: Boolean;
protected
procedure InterfaceMethod1;
public
procedure DynamicMethod1; dynamic;
procedure DynamicMethod2; dynamic;
procedure VirtualMethod1; virtual;
procedure VirtualMethod2; virtual;
end;
TMyObject2 = class(TMyObject)
private
FField3: Integer;
public
procedure DynamicMethod1; override;
procedure VirtualMethod1; override;
end;
内存结构:
TInterfacedObject内存结构如图:
TMyObject内存结构如图:
TmyObject2内存结构如图:
如图,TMyObject2的VirtualMethod1方法覆盖了父类的VirtualMethod1方法,故虚方法表中VirtualMethod1的指针指向了TMyObject2的VirtualMethod1方法。TMyObject2的DynamicMethod1方法覆盖了父类的DynamicMethod1方法,由于动态方法表只保存当前类的动态方法表,故表中只有一个DynamicM
相关文档:
一、引子:
现在的Windows应用程序几乎都使用图标、图片、光标、声音等,我们称它们为资源(Resource)。最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便程序需要的时候调用。资源是程序的一部分,程序要正常运行就离不了资源文件。但是它是不可执行代码。
&n ......
Windows API 的数据类型与 Delphi 数据类型对照表
作者:admin 来源:未知 日期:2010-1-28 13:10:56 人气:43 标签:API
导读:WindowsAPI的数据类型与Delphi数据类型对照表
Windows 数据类型
Delphi 数据类型
描述
LPSTR
PAnsiChar
字符串指针
LPCSTR
PAnsiChar
字符串指针
DWORD
LongWo ......
Delphi中建议使用的语句
楼主zswang(伴水清清)(专家门诊清洁工)2002-05-15 13:37:54 在 Delphi / VCL组件开发及应用 提问
No.1 判断逻辑类型
var B: Boolean;
begin
B := Boolean(2); //这样只是为了调试//B ......
delphi指针简单入门:
看一个指针用法的例子:
1 var
2 X, Y: Integer; // X and Y 整数类型
3 ......
1.因为KeyPreview默认是 False;我们这里需要响应键盘事件的话,需要将其修改为True;
所以KeyPreview:=True; 这对一些快捷键会有用。
在窗体属性上修改KeyPreview := True;
2.在窗体的FormKeyDown函数里写:
if KeyPreview then
Form将先响应键盘事件(在TEdit等控件之前)
else
除非Fo ......