In Delphis eigenem Quelltext werden Argumente niemals als const deklariert, bei denen eine Klasse übergeben wird. Ist für Typen, die nicht größer sind als Pointer/NativeInt aber nicht so wichtig.
Ansonsten ist jaenickes Antwort richtig: Objekte wird man i.a.R. nicht in Funktionen zurück. Davon gibt es zwei Ausnahmen:
* Getter einer Klasse (Funktionen, die eine Eigenschaft zurückgeben). Der Speicher des zurückgegebenen Objekts wird weiterhin von der Klasseninstanz des Getters verwaltet, weshalb man das Ergebnis des Getters nicht selbst freigeben darf. Kennt man von TListBox.Items, TMemo.Strings, TComboBox.Items.
* Konstruktoren. Dann heißt das Ergebnis nicht Result (oder Methodenname) sondern Self (kann man auch weglassen):
Delphi-Quellcode:
type TMeineStringList = class(TStringList)
constructor Create(sa, sb: TStringList);
end;
constructor TMeineStringList.Create(sa, sb: TStringList);
begin
inherited Create();
Self.Add(sa[0] + sb[0]);
end;