看看這段代碼:德爾福記錄拷貝構造函數
type
TTest = record
a: integer;
pa: PInteger;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a, b: ttest;
begin
memo1.Clear;
a.a := 5;
a.pa := @a.a;
Memo1.Lines.Add(a.a.ToString + ' - ' + (a.pa)^.ToString);
b := a;
b.a := 8;
Memo1.Lines.Add(b.a.ToString + ' - ' + (b.pa)^.ToString);
end;
輸出如下:
5 - 5
8 - 5
這是正確的,但不是我所期望的。當我說b := a
它將a的每個字段複製到b中。因此,a.pa := @a.a;
當然b.pa
將與a.pa
相同。
相反,我希望我撥打b := a
b.pa
指向b.a
而不是a.a
。我怎樣才能做到這一點?輸出將是
在C++中有(深)複製構造函數,可以解決此問題。在德爾福這是一個不同的場景,但有什麼「等價」?我在文檔中看到了運算符超載列表,但我無法找到合適的列表。
我不確定深層複製對此示例有幫助。 –
我想用C++來說,這將是一個更深層次的任務,而不是一個深層複製 –