Delphi2010新发现-类的构造和析构函数功能

Delphi2010发布了.

虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究.

今天有点时间试了一下新功能.

本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造和析构).也就是在模块初始化/卸载的时候会调用.

这样有很多好处,比如说类的静态变量的初始化什么的都可以在这里做.

 

Delphi For Win32对这方面的需求还不是很大.

第一个原因.历史上旧版Delphi不支持静态变量.只能用Unit的全局变量+类函数来模拟.所以类的构造析构基本没需求.从Delphhi2005还是2006开始才支持Class var的.记得不太清楚了

第二个原因.Delphi的Unit有初始化节和反初始化节(initialization/finalization).很多初始化工作都可以在这里面做.比如说类的静态变量.所以对类的构造函数需求不是很大.

 

随手试了一下Delphi2010.惊喜的发现不知道什么时候Delphi2010已经开始支持类的构造和析构函数了.易博龙和CodeGear居然在介绍Delphi2010的新变化的同时都没有介绍这个特征.

 

贴一段代码:

 

type   TTest = class   private     class var StaticABC : Integer;  //类变量(类似C++的静态变量.但不完全等同)     var     FABC : Integer; //普通成员变量   public     class constructor Create();//类的构造函数     class destructor Destroy; //类的析构函数

    constructor Create();   //实例的构造函数     destructor Destroy; override; //实例的析构函数   end;

{ TTest }

class constructor TTest.Create; begin   StaticABC := 1234; end;

class destructor TTest.Destroy; begin

end;

constructor TTest.Create; begin   FABC := StaticABC; end;

destructor TTest.Destroy; begin

  inherited Destroy; end;

 

呵呵.很有意思.虽然以前用Unit的initialization/finalization可以实现.但是如果有了类的构造和析构语法的话代码的可读性会更好.

 

同时还发现结构体(Record)也可以用一样的语法.可编译通过,但是实际上却没有效果.估计以后会加上这个功能吧

posted @ 2015-04-25 17:05  出离  阅读(372)  评论(0编辑  收藏  举报