El 06/04/2016 a las 13:23, Graeme Geldenhuys escribió: > "The difference between objects and classes is mainly that an object is > allocated on the stack, as an ordinary record would be, and that classes > are always allocated on the heap." > > Are there pros or cons to either? > > Regards, > - Graeme - A nice pro of objects is that, if you don't need a constructor, you can forget about calling create and free.
If you need a constructor (ie it has virtual methods), there is not that advantage. Moreover, if the object uses classes instances that must be freed, you also must call destructor, then any advantage is over. Maybe a little performance gain using stack instead of heap. A nice feature would be default creator and destructor: ej. type TMyObject=Object constructor default; Destructor default; end; procedure foo; var obj:TMyObject; begin // Default constructor (if it has) automatically called here obj.xxxx; obj.zzz; // Default destructor automatically called here end; Or even with parameters type TMyObjectParam=Object constructor default(n:Integer); Destructor default; end; procedure foo; var obj1:TMyObjectParam(7); obj2:TMyObjectParam; begin // Default constructor of obj1 automatically called here with param 7 // Default constructor of obj2 not called because the declaration has no parameters obj1.xxxx; obj1.zzz; if condition then begin obj2.Default(x); // Constructor must be called manually obj2.xxxx; obj2.zzz; end; // Default destructor of obj2 automatically called here if it has been initializated // Default destructor of obj1 automatically called here end; -- Saludos Santi s...@ciberpiula.net _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal