Ich dachte, das hätte ich deutlich gemacht.
Also wann wird _ClassDestroy aufgerufen? Es ist ne CompilerMagic sache nehme ich an so wie der RefCount bei ARC.
Wird es automatisch nach .Free eingefügt?
Genauer gesagt nach dem
Destroy, weil das ein
destructor ist. Das Free ist ja nur eine ganz normale Methode. Vor dem Destroy wird übrigens auch noch _BeforeDestruction aufgerufen. Diese Aufrufe sieht man nirgendwo im Quellcode, sondern der Compiler setzt sie automagisch ein.
Nein, nicht überall - zumindest nicht bedingungslos. So sollte man bei einem override von Assign nur dann das inherited aufrufen, wenn man weiß, dass die Parentklasse da noch was Sinnvolles macht. Leitet man direkt von TPersistent ab oder gibt es in der Hierarchie dazwischen kein Assign-override, dann sollte man inherited nur dann aufrufen, wenn man mit der Source nichts anfangen kann. Sinngemäß gilt das auch für AssignTo.