{固定 03.05,请参阅“!!!” 用于更正} D 10. 这是课程
TMy=class
{public\publicher}
a:integer;
sl:TStringlist;
end;
TMyF=class
{public\publicher} // тут читаю - http://www.delphibasics.ru/Public.php - в1: объясните разницу?
i:integer;
s:string;
My:TMy;
end;
var MyF:TMyF;
!!!{my:TMy;} {вот это не надо, исправления от 03.05.17}
利用
..begin
MyF:=TMyF.create;
!!!{my:=MyF.tMy.create;} {это не правильно, исправление от 03.05.17}
MyF.My:=MyF.tMy.create; // Правильно ли создаю и надо ли если основной клаcс уже есть? т.е. без этой строки могу ли уже обращаться к MyF.My.. подклассам A,SL?}
...
MyF.free; // В2. Если я тут класс уничтожаю, в котором TMy родился - память и он сам уничтожится? (или перед этим надо myf.my.free делать?)
end;
来自@kami的附录:
TMyF警告:仅当正在创建的对象成为传递给其构造函数的对象的所有者时,才应使用建议的析构函数实现TMy。这完全取决于手头的任务。TMy 可以在构造函数本身中创建,而不是将其作为参数传递到那里。然后保证它存在并且在析构函数中不需要更改任何内容。