什么析构啊构造啊!都搞不懂!反正所有关于类的都不懂!

解决方案 »

  1.   

    我也初学者,看看《Delphi 高手突破》讲得比较清楚
      

  2.   

    有没有电子书籍《Delphi 高手突破》的下载地址?
      

  3.   

    呵呵,类类型,很多的地方也叫类之类,都是一个概念!Delphi中的对象是基于指针的,也就是说,当你申明了一个类的实力对象的时候,如
    var
      Obj:TObject;
    你只是申明了一个指针,是4字节32位的,这个指针存在于那里呢?这个指针存在于栈中,但是这个时候只有这个指针,我们还没有创建这个实力(所以如果这个时候你在你的程序中直接调用这个对象,肯定会出现内存访问的错误)。所以在程序中我们需要这样创建:
    Obj:=TObject.Create(Owner);  //★注意这个创建对象的方法,一会还要提到!!
    这个时候我们才真正创建了这个对象,这个对象又存在于那里呢,它不存在于栈里,而是存在与堆中。而栈中的那个指针指向的就是这个堆中的实力。
    对于一个类实力中的所有数据成员,他们都跟在那个指针后面按次序存储的。而那个指针指向的堆中的实力其实就是每个类的VMT(虚拟方法表),VMT是实现RTTI和多态的根本。具体里面都有些什么东西我们没有必要了解那么清楚了?呵呵,除非你想学习对象模型!!!
    一个程序中申明的同一个类的所有对象都共享同一个VMT。所以说,OP中的对象是指针,但这个指针的申明和使用过程中我们都看不到指针运算符^,对了,为什么叫他OP(OBJECT PASCAL),而不叫他PASCAL,就是因为OP对P的语法进行了适当的扩充,这里就是一个扩充的地方。所以,我们平常使用的对象,实际上只是一个存在与栈中的,但却指向堆中的指针。而所有对象的来源-----类,其实就是那个VMT(存在于堆中)。所以我们不妨将一个类就看做一个VMT,也就是说,一个VMT就是一个类,类就等于VMT。
    既然我们理解了DELPHI中的类和对象的概念(虽然很粗浅,但很容易理解),下面我们就来说说类类型。
    我们前面说过,类就是一个VMT,所以类类型,我们不妨就看做VMT的类型。所以知道了这个以后,我们没有必要去管理他什么析构,什么构造,只要知道类类型是在类的高度上进行类型化就可以了。现在我们回到刚才做标注的那个地方。为什么我们可以直接使用一个类的标识来调用他的Create方法,因为他就是一个类方法,因为在创建对象前对象还是不存在的,所以我们创建对象只可能使用类方法,但我们解析对象的时候却使用的是对象方法(绝对不能使用对象方法!)好了,说了一大堆,其实我自己都有点糊涂了,呵呵,如果各位还是不明白,去看看我朋友以前发的一个帖子。他在里面收集了几篇很不错的文章和几本相当好的书籍,大家有兴趣可以去看看。最后祝所有学习DELPHI的朋友学业有成,呵呵!千万不要犯全世界的程序员都容易犯的错误----长时间被迫于APP开发,最后几乎忘记了还存在一个低层!!我朋友(DDEVELOPER)发的帖子:
    http://expert.csdn.net/Expert/topic/1500/1500601.xml?temp=.7570154