Used to create an object with the exact type given at runtime. The general type may be assumed. See: http://www1.bell-labs.com/user/cope/Patterns/C%2b%2bIdioms/EuroPLoP98.html#VirtualConstructor ---- OK, that's interesting. In ObjectPascal, I found this: ''The most notable feature of ObjectPascal as in Delphi is the use of type variable, and through type variables the usage of VirtualConstructor (yes you can declare a constructor virtual in Delphi). As far as I know there's no other OO typed language having such a useful feature. '' If I have this right, it seems that the VirtualConstructor is a feature of DelphiLanguage, but has to be implemented using some sort of support class in other languages. So we might have TFoo = class public constructor Create; virtual; end; TBar = class(TFoo); public constructor Create; override; end; TFoo''''''Class = class of TFoo; //declares a class reference type ... var fc: TFoo''''''Class; afoo: TFoo; begin fc := TFoo; afoo := fc.Create; // returns a TFoo ... fc := TBar; afoo := fc.Create; // returns a TBar {contrived example - we could just call TFoo.Create or TBar.Create in these cases} end; There must be similar features in other typed languages surely? ---- If you think you need a VirtualConstructor, you may be better off with a ClassFactory. ---- VirtualConstructor is also a nickname for the FactoryMethodPattern in the DesignPatternsBook ---- ClassFactory is needed when there's no support for strong typed MetaClassVariable with inheritance support and VirtualMetaClassMethod MetaClassVariable are especially useful in InitializationSequence, allowing to build sets of ClassRepository