我有疑问!!(50分)

  • 主题发起人 主题发起人 wqthai
  • 开始时间 开始时间
W

wqthai

Unregistered / Unconfirmed
GUEST, unregistred user!
摘自左轻侯的文章:类和其他的数据类型是不同的。其他的数据类型都是声明了变量之
后就可以直接使用,而类类型必须在使用Create方法创建它的实例(对象)之后才能使用。
....Delphi(包括它的孪生兄弟C++ Builder)在这方面与众不同,必须要Create一下才
能真正建立对象....这是强调先创建再使用对象。但这个简单的类不用Create也不报错,所
以我想知道:到底什么情况下必须Create,什么情况下不必Create就可以使用,我搞不清楚!
小例子:TData = Class
private
FData: Integer;
public
procedure ShowProc;
end;
.....
implementation

procedure TData.ShowProc;
begin
ShowMessage(IntToStr(FData));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
AData: TData;
begin
// 没有Create也不报错
AData.FData := 5
//同一单元中不同的类可以引用private变量,与C++不同吧?
AData.ShowProc;
end;

有关这些问题,谁给俺讲讲阿!感激不尽!!
 
我想是随机值吧。如果你在赋值之前执行 Adata := nil
再执行下去就会发生访问异常。
 
局部变量的初值是随机的!那把Adata声明成全局变量就知道了,肯定出错。
Delphi中的对象不 Create 是不能使用的,而且使用要接得必须调用free.
PS:这告诉了你:在使用局部变量的时候最好赋初值,负责后果难料.
 
谢谢!! 比以前清楚了!
 
因为你访问的是类中基本的变量,而不是类里面的子对象,所以不用创建,
假如你里面有个对象Edit: TEdit,你不创建AData,来访问AData.Edit.Text就回报错
 
有的类在CREATE()函数里有一些申请内存等操作,必须对这些变量进行初始化,否则出错
有的只是初始化一些静态变量,这种类使用之前不调用CREATE()函数没有关系,但
类中的变量的初始值不确定,有一定的危险。
一般使用了CREATE()后要用FREE()清除此对象,否则容易造成内存泄露。
 
后退
顶部