刚刚学会了简单的函数调用,书上又介绍"构造函数"和"解析函数",小弟就犯愁了,书上讲的太牢笼了,长篇大论,大家能用最直接最通俗的方法,说下它的原理,小弟理解能力差,希望能得到帮忙,谢谢了!

解决方案 »

  1.   

    Delphi中的构造函数 Delphi中所有类都继承自TObject ,Create默认不是虚方法 ,Destroy默认是虚方法.
    VCL中组件继承的大多Create都被声明成虚方法了。在Delphi当中构造函数当中的create与析构函数destroy大部分都是虚方法.可以覆盖.
    被覆盖的函数必须是虚(virtual)的,或者是动态(dynamic)的.
     
    (Constructors)构造函数,  用来创建和初始化一个实例对象,  构造函数返回的对象的引用. 初始化对象是基于传给构造函数的参数值.
     当类引用调用构造函数时,若执行过程中发生异常,则自动调用析构函数destroy来销毁不完整的对象.
      声明为虚方法的构造函数,和声明为静态时时相同的.虚构造函数允许使用多态.
      构造函数的初始化过程:
     1.它在堆中为对象分配内存,并设置所有的有序类型的字段为0,把nil赋值给所有的指针和类类型的字段.使所有的字符串类型的字段为空. 
     2.构造函数中指定的其他动作(命令)开始执行.
      在派生类中构造函数的初始化过程:
     1.调用继承下来的构造函数,对继承的字段进行初始化.
     2.然后对派生类中新引入的字段进行初始化.
        (以为构造函数总是把新对象分配的内存进行"清零"<clear>,所以,对象的所有字段开始时都是0<有序类型>,nil<指针和类>,空<字符串>或者unasslgned<变体类型>.所以,除非字段的值不为0或者空值,我们没有必要在构造函数当中初始化各字段);
    type
     TShape = class(TGraphicControl) 
     private 
      FPen: TPen; 
      FBrush: TBrush; 
      procedure PenChanged(Sender: TObject); 
      procedure BrushChanged(Sender: TObject);
     public 
      Constructor Create(Owner: TComponent); override; 
      Destructor Destroy; override; 
      ...
     end; 
      Constructor TShape.Create(Owner: TComponent); 
     begin 
       inherited Create(Owner);  // 初始化继承下来的部分  
     Width := 65;      //  改变继承下来的属性 
     Height := 65; 
     FPen := TPen.Create;    //  初始化新字段
     FPen.OnChange := PenChanged; 
     FBrush := TBrush.Create; 
     FBrush.OnChange := BrushChanged; 
    End; 
      

  2.   

    constructor create; //构造好比盖楼
    destructor destroy; override; //析构好比拆楼