假设有如下类声明:
try
TMyObj = class
public
procedure SayHello;
end;
SayHello实现如下:
procedure TMyObj.SayHello;
begin
end;
下面的代码会不会引发错误,请说明原因:
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Free;
MyObj.SayHello;
end;
...全文
34618打赏收藏
一個深刻的技術問題,急
假设有如下类声明: try TMyObj = class public procedure SayHello; end; SayHello实现如下: procedure TMyObj.SayHello; begin end; 下面的代码会不会引发错误,请说明原因: var MyObj: TMyObj; begin MyObj := TMyObj.Create; MyObj.Free; MyObj.SayHello; end;
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Free;
MyObj.SayHello;
end;
我发现真接调用类中的方法也不会出错,如果你要使用静态方法那就不要创建实例
如果创建、后又放掉那内存就是空的了,当然会错
var
MyObj: TMyObj;
begin
MyObj.SayHello;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMyObj = class
public
aa :string;
procedure SayHello;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Free;
myobj.aa := '11111111';
MyObj.SayHello;
end;
{ TMyObj }
procedure TMyObj.SayHello;
begin
showmessage(aa);
end;