[fpc-pascal] Constructors & Destructors 101
    Jonas Maebe 
    jonas.maebe at elis.ugent.be
       
    Fri Apr  3 11:03:54 CEST 2009
    
    
  
On 03 Apr 2009, at 03:43, Richard Ward wrote:
> C)	Just out of curiosity, am wondering why FreeAndNil is global  
> procedure instead of a method/destructor of TObject.
If you have:
var
   c: tsomeclass;
begin
   c:=c.tsomeclass.create;
   c.freeandnil
end;
then freeandnil would get, as first (hidden) parameter, the self  
pointer. However, this self pointer is a value parameter. So it would  
only contain the value of "c", not its address. Hence, there is no way  
to set "c" to nil inside the freeandnil method (while setting the  
instance variable to nil is the entire reason for using freeandnil).
Jonas
    
    
More information about the fpc-pascal
mailing list