{$mode objfpc}
type
  TA = class
    constructor Create;
    procedure P; virtual;
  end;
  TB = class(TA)
    constructor Create;
    procedure P; override;
  end;
constructor TA.Create;
begin end;
procedure TA.P;
begin writeln('TA') end;
constructor TB.Create;
begin Inherited Create end;
procedure TB.P;
begin writeln('TB') end;
var
  A : ^TA;
begin
  GetMem(A, sizeof(TA));
  A^ := TB.Create;
  A^.P;
end.
 {$mode TP}
type
  TA = object
    constructor Create;
    procedure P; virtual;
  end;
  TB = object(TA)
    constructor Create;
    procedure P; virtual;
  end;
constructor TA.Create;
begin end;
procedure TA.P;
begin writeln('TA') end;
constructor TB.Create;
begin Inherited Create end;
procedure TB.P;
begin writeln('TB') end;
var
  A : ^TA;
begin
  GetMem(A, sizeof(TA));
  A^.Create;
  TB(A^).P;
end.
 Добавлено:
Вопрос решен
TB(A^).Create;