Hallo,
Zitat von
Der_Unwissende:
Hierin liegt auch díe eigentliche Begründung für die Position von inherited. Das Create eines TObject hat die grundlegenden Dinge zu erledigen, es muss Speicher alloziert, diese Tabelle erzeugt und ein Verweis zurückgegeben werden. Vieles von dem Code bleibt aber verborgen, da es sehr spezifisch ist. Deshalb wirkt das Create nur leer, tatsächlich wird auch dort (natürlich) Code ausgeführt.
Das stimmt nicht! Der Speicher (und die anderern genannten Dinge) wird (durch Compilermagic) beim Aufrufen des Konstruktors reserviert, und zwar bevor der Konstruktor ausgeführt wird. Durch inherited aufgerufene Konstruktoren und Destruktoren werden (wieder per Compilermagic) wie ganz normaler Methoden aufgerufen.
Der eigentliche Grund für das inherited auch bei TObject ist, dass Codegear ja jederzeit auf die Idee kommen können, Konstruktor oder Destruktor von TObject zu verwenden. Wenn dann in den Ableitungen das inherited fehlt...
Gruß
xaromz