本帖最后由 luojiadashao 于 2012-03-15 16:44:17 编辑

解决方案 »

  1.   

    上午LZ不是发了一个帖子么?才给了五分,关于class of书上有祥细介绍。引用里面的原话:在程序编译时期,想要利用类别名称或特件来呼叫类别方法。或虚拟建构函式,可是却又不知道类别或物件的真正资料型别,这时候类别参考就非常有用了。
      

  2.   

    谢谢case5166
    (我看见佛)
    是什么书  可以介绍下吗  现在弄的是懂非懂 诶!!! 我的delphi啊 my god 啊
    希望大侠多多谈论哈  分不够可以再加哈
      

  3.   

    System单元的TObject有如下方法:
    function ClassType: TClass;它就是获取对象的类类型,它的返回类型TClass就是class of TObject。因为所有类都派生自TObject,所以所有对象都可以调用ClassType。比如:procedure TForm1.Button1Click(Sender: TObject);
    var
      S: TStringList;
      C: TClass;
    begin
      S := TStringList.Create;  C := S.ClassType;
      ShowMessage(C.ClassName);//对话框会显示出来TStringList,相当于TStringList.ClassName  S.Free
    end;
    而C.ClassName调用的是TObject的类方法ClassName,原型:
    class function ClassName: ShortString;
    就是说不需要用实例化的对象去调用,直接用类去调用就行了;不过用对象调用也是可以的,因为对象空间也保存了类的VMT地址。
      

  4.   

    用类调用形如:TStringList.ClassName
    用对象调用形如:S.ClassName
      

  5.   

    class of...类引用 和 class functiong/procedure...
    有什么用??? ---可以不创建类实例,通过类名.名字
    什么时候用??? --需要频繁调用的时候,而且不需要创建类实例的情况下
      

  6.   

    这段书上的话估计翻译自Delphi的帮助文档:
    Class-reference types are useful when you want to invoke a class method or virtual constructor on a class or object whose actual type is unknown at compile time.
    我上次翻译成这样了,应当不对:
    类引用类型是有用的,当你想调用一个“类方法”或当你想调用在编译时期实际类型未知的一个类或对象的虚构造器的时候。应当这样:
    类引用类型是有用的,当你想调用在编译时期实际类型未知的类或对象的“类方法”或虚构造器的时候。
      

  7.   

    我是这样理解的
    类引用 : class of 相当于一种类型的类; 不需要创建实例;就可以直接调用;运行时期实际类型未知的类 时;
    类的方法 : class function 在实例化前就可以直接调用(不在private区域) 
      

  8.   

    var
      List: TStrings;
      i: Integer;
    begin
      List := TStringList.Create;  for i := 0 to 99 do List.Add(IntToStr(i));  Memo1.Lines := List;  List.Free;
    end;{ 
      TStrings 类中包含了抽象方法, 但这些抽象方法在其子类 TStringList 中都得到了实现;
      因此, 我们虽然定义的是 TStrings 类的变量, 却要通过 TStringList 来实现.  这里就有个问题, 我们直接使用 TStringList 不行吗? 为什么还要绕个弯?
      我觉得是: 这样才更符合"多态"的思想吧;
      仅就本例而言 Memo1.Lines 本身就是 TStrings 类型的, 这样可以避免类型冲突. 举例说明:
    }
     来自 万一 博客