构造函数CREATE是系统默认的吗?(20分)

  • 主题发起人 主题发起人 马云飞
  • 开始时间 开始时间
什么意思?
 
"系统默认"? 函数名字create的确是系统规定了的.
 
构造函数的函数名字可任意取不一定用create
 
>>>构造函数的函数名字可任意取不一定用create
?????????????
 
我的意思是说: 不能吧?
 
Liu JZX is right.
"A class can have more than one constructor,
but most have only one. It is conventional
to call the constructor Create."
-- from Delph helpdo
cument
 
构造函数可以任意取名,但VCL控件的构造函数一般是Create,因为有时控件实例创建
是将是调用Create,例如TLabel, TForm等。
但我们可以自己定义构造函数名。
例如
TMyClass=class
...
constructor MyCreate;
end;

var
Mc:TMyClass;
Mc:=TMyClass.MyCreate;//创建实例
而且在自定义的构造过程中可以调用Create因为Delphi所有的类的缺省祖先都为
TObject而TObject的构造函数为Create;
constructor TMyClass.MyCreate;
begin
inherited Create;
....
end;

 
Delphi为了兼容以前Dos下的Turbo Pascal5..6, Borland Pascal 7.0,仍然
提供了Object关键字。我们可以这样定义对象他将不继承于TObject
TMyObject=Object//原始祖先
....
end;

TMyObject2=Object(TMyObject)
...
end;
 
cAkk:
你连这个都不明白??
构造函数Create是从最高基类TObject继承来的,
//system.pas
constructor TObject.Create;
begin
end;
实际什么都没干!

我们也可以自己定义构造函数,
比如定义一个类:
type
TcAkk=class(TSomething)
constructor CreateFromStream(Stream:TStream);
end;

constrcutor TcAkk.CreateFromStream(Stream:TStream);
begin
Inherited Create;
LoadFromStream(Stream);
end;
 
我不明白的多着哪! 从来没注意这方面,因为C++是不能用别的名字的构造函数的,
我还以为delphi也是只能使用Create这个名字哪!
哎! 以后我还怎么见人啊! :-(
 
在Turbo Pascal 的OOP中,用户得自行解决构造与析构函数的问题。
有了Delphi的VCL, 这一步就略去了,以后的内容同Hexi、蚯蚓等的方法。
 
蚯蚓兄满厉害的吗!! create 是从最高层的 tobject 继承来的。最好还是用默认的
 
构造函数名是不是Create从技术上讲真的是无所谓,判断一个函数是不是构造函数只是从函数声明中是否有constructor关键字来判断的。不过为了他人使用的方便,一般将构造函数命名为Create。
构造函数的写法一般为:
Constructor 函数名(参数);
begin
inherited Create;
//或其它名的构造函数
...
end;

 
蚯蚓同志是从Turbo Pascal开始玩的哦!
那时候Borland作了一个叫Turbo Vision的东西
DOS时代文本模式下的仿Win界面的类库
玩过Borland C++ fordo
S或Turbo Pascal 6.0/7.0的弟兄应该知道,
如果不知道,回忆一下这些东西的IDE,就是用Turbo Vision写的
很完整的一个对象库哦!
按纽、输入框、菜单、窗口、Application类、状态栏等等等等
甚至连MDI都有耶!!
后来有了Turbo Pascal for win
那里的OWL,简直就和TV一模一样,代码大概直接可以拿来用
但是这套东西不是RAD的,用起来很麻烦,
所有的Windows窗口的位置、风格一切的一起都要自己写代码搞定
这种方式写写DOS下的小东西还勉强忍受,
到了win平台下就不行了,
于是再后来有了VB Killer,我们心爱的Delphi
有了属性(property),这个天才的思想
说老实话,我在OOP方面的启蒙就是从Turbo Vision这里开始的
从此对Borland五体投地....
 
嘿嘿,其实Turbo Vision我也用过,不过很少.确实不错,很漂亮.
大家知道最早以前VB1.0也有DOS版本的,整个一套DOS下的对象库,写DOS程序
到是挺方便,但是做出来的界面,一个字: 屎!
 
我也用Turbo Vision玩了几个东西。我真正接触面向对象也就是从它开始的。
 
关键是要有 constructor destructor,
 
多人接受答案了。
 
后退
顶部