type
TMyRecord = record
Value: Integer;
class operator Initialize(out Dest: TMyRecord);
class operator Finalize(var Dest: TMyRecord);
class operator Assign(var Dest: TMyRecord; const [ref] Src: TMyRecord);
constructor create(v : Integer);
end;
class operator TMyRecord.Initialize(out Dest: TMyRecord);
begin
end;
class operator TMyRecord.Finalize(var Dest: TMyRecord);
begin
end;
class operator TMyRecord.Assign(var Dest: TMyRecord;
const [ref] Src: TMyRecord);
begin
end;
constructor TMyRecord.create(v : Integer);
begin
Value := v;
end;
使用的时候还要
var a : TMyRecord := TMyRecord.create(1);
实际上既有constructor,又有Initialize,是有歧义的,完全可以合并。
变成如下这种方式:
class operator Initialize(out Dest: TMyRecord, 各种构造的参数);
比如
class operator Initialize(out Dest: TMyRecord, v : Integer);
使用的时候就可以非常简洁了。
var a : TMyRecord(1);