• 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)也可以用一样的语法.可编译通过,但是实际上却没有效果.估计以后会加上这个功能吧

    http://blog.csdn.net/wr960204/article/details/4518127

  • 相关阅读:
    HDU 4861 Couple doubi(数论)
    POJ 3233 Matrix Power Series 二分+矩阵乘法
    js原生offsetParent解析
    ADS-B显示终端6.8
    模板
    习题四——数字智力题
    Android ORMLite ForeignCollection关联外部集合
    Android应用程序无法读写USB设备的解决方法
    [学习笔记]批次需求计划-十一大量
    jqury+css实现可弹出伸缩层
  • 原文地址:https://www.cnblogs.com/findumars/p/5037479.html
Copyright © 2020-2023  润新知