Konstruktor może być wywołany przez użycie zmiennej o typie odwołania klasowego. To umozliwia konstrukcję obiektów, których typ nie jest znany w czasie kompilacji. Przykład:
type TControlClass = class of TControl; function CreateControl(ControlClass: TControlClass; const ControlName: string; X, Y, W, H: Integer): TControl; begin Result := ControlClass.Create(MainForm); with Result do begin Parent := MainForm; name := ControlName; SetBounds(X, Y, W, H); Visible := True; end; end;
Funkcja CreateControl wymaga parametru typu odwołania klasowego do uzyskania informacji jaki rodzaj kontrolki ma wykreować. Funkcja używa tego parametru do wywołania konstruktora klasy. W wywołaniu CreateControl można wyspecyfikować identyfikator klasy do wykreowania jej egzemplarza. Przykład:
CreateControl(TEdit, 'Edit1', 10, 10, 100, 20);
Konstruktory wywoływane przez użycie odwołań klasowych są zwykle wirtualne. Implementacja konstruktora aktywowanego w wywołaniu zależy od typu odwołania klasowego w czasie wykonania programu.