classicalautoptr.pas
来自「在Delphi2009中实现类似于STL中auto_ptr的智能指针!关于此智能」· PAS 代码 · 共 43 行
PAS
43 行
unit ClassicalAutoPtr;
interface
uses
SysUtils;
type
TClassicalAutoPtr = class(TInterfacedObject)
private
fObj: TObject;
public
constructor Create(aObj: TObject); virtual;
destructor Destroy; override;
class function New(aObj: TObject): IInterface;
end;
implementation
{ TClassicalAutoPtr }
constructor TClassicalAutoPtr.Create(aObj: TObject);
begin
fObj := aObj;
end;
destructor TClassicalAutoPtr.Destroy;
begin
// 智能指针在方法退出时销毁,同时销毁所管理的堆对象
FreeAndNil(fObj);
inherited;
end;
class function TClassicalAutoPtr.New(aObj: TObject): IInterface;
begin
// 外部必须使用此方法创建智能指针
// 因为此方法会暴露给外部一个接口
// 后台碰到接口后会自动调用接口的析构函数
Result := TClassicalAutoPtr.Create(aObj);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?