Здравствуйте, Serginio1, Вы писали:
S>Есть https://sergworks.wordpress.com/2012/03/13/record-constructors-in-delphi/
а, ну значит я отстал. Давно дельфи не занимался. Раньше не было.
Изначально (и очень долгое время) в дельфи все классы создавались только динамически (в куче). У структур конструкторов не было.
Create именно
создавал объект в куче и возвращал ссылку.
поэтому вызов
v:=TMyClass.Create;
выглядел логически. Ты создаешь объект, попутно его инициализируя, и возвращаешь ссылку, которую присваиваешь переменной которая будет хранить эту ссылку. Поэтому и назвали конструктор словом Create (хотя насколько помню имя может быть любое)
Потом они решили присобачить к структурам конструктор и решили оставить синтаксис вызова конструктора для структур таким же как и при создание объектов в динамической памяти (в куче) — то есть та же самая шляпа что и в C#.
Кстати раньше в Turbo Pascal был другой синтаксис, без оператора присваивания, и конструкторы было принято называть Init а деструкторы Done
выглядело это так при создании на стеке
var
s: TMyClass;
begin
s.Init;
s.Done;
end.
То есть ты только инициализируешь уже существующий на стеке класс
а при динамическом создании объекта выглядело по другому (через new)