One of the most common reasons you might want this approach is for polymorphism--so just reading up on the different cast operators, RTTI and how they work with pointers to a base class may discuss much of it. The FAQ Lite covers many of these issues.