I recently had to implement a class derived from TCollection and noticed that TCollection does something very interesting. When you call TCollection::Add, it instantiates a class about which it knows nothing more than the run-time type information (RTTI). After inspecting the VCL source, I realized that it was calling the constructor through the Object Pascal equivalent of "TMetaClass*", the "class of" type. So I tried to do the same thing in C++. I have not found a suitable alternative, so I figured out how to accomplish the same task using some dirty Delphi tricks...
Bundled with every copy of Borland C++ Builder is an Object Pascal (Delphi) compiler. So all you have to do is get Pascal to instantiate your object for you. Here is a Unit written in Object Pascal that can create any TComponent-derived class and return it as a TObject:
When you compile the Pascal unit, C++ Builder generates a .hpp file of the same name. In this case, New.hpp, that you can include in your code:
Although this seems useless, given the more natural form provided in the comments, imagine storing the TComponentClass* as a property in another component, and then instantiating another member based on the type specified in your property. Suddenly looks a little cooler, eh?
There's also a VCL function, FindClass, that takes a class name as an AnsiString and returns a TMetaClass*. If I recall correctly, a little casting will get you from TMetaClass* to TComponentClass* (with appropriate runtime checks to make sure the casts are safe, of course...).