📄 classicalautoptr.pas
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -