[fpc-pascal] Class vs Object type

Dennis dec12 at avidsoft.com.hk
Wed Apr 6 16:28:01 CEST 2016


objects unit contains
    TObject = OBJECT
       CONSTRUCTOR Init;
       PROCEDURE Free;
       FUNCTION Is_Object(P:Pointer):Boolean;
       DESTRUCTOR Done;  Virtual;
    END;


On the other hand, objpash.inc contains
        TObject = class
        public
           { please don't change the order of virtual methods, because
             their vmt offsets are used by some assembler code which uses
             hard coded addresses (FK)                                 }
           constructor Create;
          .....

That is so confusing.
What are other real benefits in inheriting from object unit's TObject?

The zeroing function of init can easily be achieved by copying the code 
to the user's object init constructor:

CONSTRUCTOR TObject.Init;
VAR LinkSize: LongInt; Dummy: DummyObject;
BEGIN
    LinkSize := Pbyte(@Dummy.Data)-Pbyte(@Dummy);  { Calc VMT link size }
    FillChar((Pbyte(@Self)+LinkSize)^,
      SizeOf(Self)-LinkSize, #0);                      { Clear data fields }
END;


Dennis

Tomas Hajny wrote:
> On Wed, April 6, 2016 15:13, Vojtěch Čihák wrote:
>> How can I do it?
>>   
>> When I try do:
>>   
>> TMyObj = object(TObject)
>>   
>> compiler tells me:
>>   
>> Error: The mix of different kind of objects (class, object, interface,
>> etc) isn't allowed
> You need to add unit Objects to the uses clause (see also the e-mail from
> Sven).
>
> Tomas
>
>
>> ______________________________________________________________
>>> Od: Tomas Hajny <XHajT03 at hajny.biz>
>>> Komu: "FPC-Pascal users discussions" <fpc-pascal at lists.freepascal.org>
>>> Datum: 06.04.2016 14:07
>>> Předmět: Re: [fpc-pascal] Class vs Object type
>>>
>> On Wed, April 6, 2016 13:26, Michael Van Canneyt wrote:
>>> On Wed, 6 Apr 2016, Graeme Geldenhuys wrote:
>> True. Note that objects descended from TObject are automatically zeroed
>> out as well as soon as one calls the constructor Init.
>>
>> Tomas
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal





More information about the fpc-pascal mailing list