Delphi2010新发现-类的构造和析构函数功能
来源:互联网 发布:淘宝代码转换器 编辑:程序博客网 时间:2024/05/16 13:47
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)也可以用一样的语法.可编译通过,但是实际上却没有效果.估计以后会加上这个功能吧
- Delphi2010新发现-类的构造和析构函数功能
- 再探Delphi2010 Class的构造和析构顺序.
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- 类的构造和析构函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- 网易游戏笔试题:编写string类的构造函数、拷贝构造函数、赋值构造函数和析构函数
- 构造函数和析构函数的构造规则
- 新发现的一些功能使用
- 编写类string的构造函数、拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 类String的构造函数拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 在VS 2005 和 VS 2008 中使用RDLC使用免费报表
- 抄袭来自http://blog.csdn.net/relative660/archive/2009/07/31/4398625.aspx WSDL逆向生成服务端
- dom javascript高级程序设计
- 谷歌大中华区总裁李开复离职
- 存储过程出现Size具有无效大小值
- Delphi2010新发现-类的构造和析构函数功能
- 心情—保持心态平衡(Balance)使人保持积极向上的情结和热情
- C FILE 操作
- [Start]开博了!
- VPATH和vpath
- 如何在VS2005中使用GDI+
- Asp.Net 开发之(1) ---如何自动加载数据到页面或更新数据到数据容器中(基础控件)
- DB2高可用性灾难恢复
- qt4.5 directfb驱动的问题,qt4.6编译的问题