class function 和function 有什么区别(100分)

  • 主题发起人 主题发起人 melvin
  • 开始时间 开始时间
M

melvin

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个类里面有这样两个方法:
class procedure UpdateRegistry(Register: Boolean
const ClassID, ProgID: string)
override;
function LogonOK(const UserId, password: WideString): OleVariant
safecall;
到底class function 和function 有什么区别,什么时候用到class function
 
类方法可以不用创建一个实例直接调用吧,我就是这么简单理解的

还是很久以前用过一次这个方法,记的不太清楚了,看help
 
类方法可以用 [类名.方法名] 调用,而不一定要调用实例。
 
procedure name;是要动态创建的。
而class procedure age 是静态的
是吗?
 
对,静态函数
 
一般用来提供一些类的基本功能,该功能只与类有关而与实例无关,比如Create、ClassName等。
简单的可以这么理解:
class function 不能访问实例变量,function 可以
class function 不用建立实例就可以调用,function不行

class function是类函数,class procedure 叫类方法;
也就是针对类写的函数。
用途:在对象为创建之前想要调用某些特殊处理的函数,就需要类函数来实现;
类函数的调用方式是通过类来调用,而不是通过对象来调用。
类函数很实用。
例如窗体的你可以写一个类方法:

class procedure TForm1.showForm1

var
frm:Tform1

begin
frm:=Tform1.Create(nil)

frm.ShowModal

frm.Free

end


调用的时候这么调用就行了
Tform1.showForm1

就省了重新申明变量,重新创建等等麻烦的步骤了
 
class function 和function 我认为他们之间本质的区别就是
class function使用时不用实例化可以直接用此方法,
而function 必须先实例化后才能使用此方法!
这是我个人的想法,不对的地方请大家多多指教!
 
我觉得类方法类似其他语言,比如VC,C#中的静态方法
 
其实就是一个动态,一个静态
 
cnzzlp说的对,比较详细。
如果尝试在class function(procedure)内部代码访问
私有变量和非类函数(过程)是非法的。
 
多人接受答案了。
 
后退
顶部