[fpc-pascal] Object constructor

Xiangrong Fang xrfang at gmail.com
Tue Sep 17 09:44:21 CEST 2013


>
> My question is, since the programmer is responsible for explicitly call
>> object constructors, then why do we need constructors at all?  In another
>> word, what's the difference
>> between an object constructor and an object method?
>>
>
> Using the constructor tells the compiler that it should allocate memory on
> the heap for a new instance,
> and return a method to this new memory. There is then an implicit return
> value for the constructor, and this is stored in the variable to which you
> assign the result of the constructor.
>

Well, could you please explain what's the difference between p1 and p2 in
the program below:

  1 program test;
  2 type
  3   TObj = object
  4   public
  5     Value: Integer;
  6     procedure SetValue(AValue: Integer);
  7     constructor Init(AValue: Integer);
  8   end;
  9
 10 procedure TObj.SetValue(AValue: Integer);
 11 begin
 12   Value := AValue;
 13 end;
 14
 15 constructor TObj.Init(AValue: Integer);
 16 begin
 17   Value := AValue;
 18 end;
 19
 20 var
 21   p1, p2 : ^TObj;
 22 begin
 23   New(p1);
 24   p1^.SetValue(1);
 25   WriteLn(p1^.Value);
 26   New(p2, Init(2));
 27   WriteLn(p2^.Value);
 28 end.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130917/8cbda8a8/attachment.html>


More information about the fpc-pascal mailing list