Wasn't talking about polymorphism. I understand polymorphism, but, say you have a case like this:
// forward decs
class der : public base
// Within any function.
der* derPointer = new der;
// Both base and derived constructors have been called.
// This may not be the correct syntax
the intent is that the pointer derPointer is now pointing to an object of type base. This means the program has...
1. Constructed an object of base
2. Constructed the derived object
This means that the object is a valid object of type der
3. Destructed the derived object
The idea of #3 is not that we interpret it as a polymorphic pointer, but that the destructor of type der has been called on this object, however the destructor for type base has not been called.
Edit: To elaborate on point 3; essentially, I would like all dog-specific members freed, and to treat it as an object of type base .
Once again, this is purely out of interest.