tMYclass=class(tobject)
private
value:Integer;
public
procedure show;
end;
...用如下方法创建:
var
s:tobject;
MyClass: TMyClass;
begin
s:=tobject(TMyClass.newinstance);
MyClass:=TMyclass(s.create);
MyClass.show;
end;
我想问的是TMyClass.Newinstance创建的实例如何分配内存?由于TMyclass没有实现tobject
的newinstance虚拟方法,它的调用实际是使用TObject的Newinstance,那么TMyClass的成员
value会分配内存吗?
private
value:Integer;
public
procedure show;
end;
...用如下方法创建:
var
s:tobject;
MyClass: TMyClass;
begin
s:=tobject(TMyClass.newinstance);
MyClass:=TMyclass(s.create);
MyClass.show;
end;
我想问的是TMyClass.Newinstance创建的实例如何分配内存?由于TMyclass没有实现tobject
的newinstance虚拟方法,它的调用实际是使用TObject的Newinstance,那么TMyClass的成员
value会分配内存吗?
begin
Result := InitInstance(_GetMem(InstanceSize));
end;class function TObject.InstanceSize: Longint;
begin
Result := PInteger(Integer(Self) + vmtInstanceSize)^;
end;