Object Pascal 对象中的方法可以定义为静态方法,如:TFoo = class
  procedure IAmAStatic;
end;也可以定义像C++中的static函数类似的方法,如:TFoo = class
  class funcation IAmLikeC() : Boolean;
end;请教:
1、两者有何区别?
2、如果第二种方法可以像C++中的static函数,那么就意味着可以不必实例化就可以调用,而第一种是否可以???

解决方案 »

  1.   

    第二种定义的像C++中的static函数,可以不需要实例化而调用
    第一种必须进行实例化才能调用呀
      

  2.   

    对,同意fancier
    delphi中的静态方法不要和c++中的混了,
    不是一个概念
    在delphi中

    静态方法
    动态方法
    虚方法
    消息处理方法
    类方法
    其中的类方法有点类似于c++的static方法,可以不建实例来调用
    但也有不同
      

  3.   

    1、前者有一个隐藏参数Self,指向类的实例,也就是对象。后者指向类。
    2、第二种方法像C++中的static函数,可以不必实例化就用,而第一种不可以,必须实例化
       后才能调用。  注意:
      delphi的class method 与 C++的Static method仅仅是像而已,但是不是完全相同。  delphi的class method:
         隐含传入了类信息的指针
      c++的static method:
        是纯正的全局函数,没有任何隐含的参数。所以它可以作为windows的回调函数使用静态:在编译应用程序时,将方法的入口地址静态得与类绑定,
      这个静态是与动态(dynamic)和虚拟(virtual)相对的。
      动态方法和虚拟方法: 只能在运行时根据对象的具体类型决定方法的入口地址。