您的位置:首页 > 编程语言 > Delphi

Delphi中实现C++/Java类似静态变量的功能

2005-04-23 20:17 926 查看
在网上看到很多人都在为Delphi是否支持C++/Java中的静态变量及静态方法的功能而困扰,其实这在Delphi中是很简单的.
静态方法就是使用Class Function. 静态变量则使用单元局部变量来实现. 代码如下:

//=========================================
// StaticVarTestU - 定义了可以计数的类,通过类方法即可访问此类的对象数
//=========================================
unit StaticVarTestU;

interface

type
TStaticVarClass = class
public
//constructor
constructor Create();
destructor Destroy; override;

//类方法,取得对象的计数
class function ObjectCount: integer;
protected
private

end;

implementation

Var
LObjCount: integer;

{ TStaticVarClass }

constructor TStaticVarClass.Create;
begin
inc(LObjCount);   //使用局部变量
end;

destructor TStaticVarClass.Destroy;
begin
dec(LObjCount);   //使用局部变量

inherited;
end;

class function TStaticVarClass.ObjectCount: integer;
begin
Result := LObjCount;     //返回局部变量
end;

initialization
LObjCount := 0;           //初始化

finalization
LObjCount := 0;

end.

//=========================================
// StaticTest - 测试代码,创建10个对象,并访问其计数,再Free掉.
//=========================================
program StaticTest;

{$APPTYPE CONSOLE}

uses
SysUtils,
Classes,
StaticVarTestU in 'StaticVarTestU.pas';

procedure printObjCount;
begin
WriteLn(Format('The Object Count now is %d', [TStaticVarClass.ObjectCount]));
end;

var
i: integer;
mObjList: TList;
begin
{ TODO -oUser -cConsole Main : Insert code here }

mObjList := TList.Create;

printObjCount;

for i := 0 to 10 do
begin
mObjList.Add(TStaticVarClass.Create());

printObjCount;
end;

for i := 0 to mObjList.Count -1 do
begin
TStaticVarClass(mObjList.Items[i]).Free;

printObjCount;
end;

mObjList.Free;

readln;
end.
请大家指正....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: