[fpc-pascal] Constructor question
    Bart 
    bartjunk64 at gmail.com
       
    Sat Jan  9 21:46:19 CET 2016
    
    
  
Hi,
Is this legal Pascal?
uses
  classes,sysutils;
type
  { TA }
  TA = class
    protected
    F1: Integer;
    F2: Integer;
    public
    constructor Create; virtual;
  end;
  { TB }
  TB = Class(TA)
    constructor Create; override;
  end;
{ TB }
constructor TB.Create;
begin
  writeln('TB.Create');
  F1 := 1;                // am I allowed to access F1 before calling
inherited Create?
  F2 := 2;
  inherited Create;
end;
{ TA }
constructor TA.Create;
begin
  writeln('TA.Create: F1 = ',F1,' F2 = ',F2);
end;
var
  A,B: TA;
begin
  A := nil;
  B := nil;
  try
    try
      A := TA.Create;
      B := TB.Create;
    except
      on E: Exception do writeln(E.ClassName,': ',E.Message)
    end;
  finally
    if Assigned(A) then A.Free;
    if Assigned(B) then B.Free;
  end;
end.
Q: am I allowed to access a property/field of TA in the constructor of
TB before calling inherited Create there?
It compiles and it ouputs:
TA.Create: F1 = 0 F2 = 0
TB.Create
TA.Create: F1 = 1 F2 = 2
This is what I intended, but is it legal, or does it just work by chance?
Bart
    
    
More information about the fpc-pascal
mailing list