Say we have an abstract base class IBase with pure virtual methods (an interface).
IBase
Then we derive CFoo, CFoo2 from the base cl
CFoo
CFoo2
You can cast an object just as you can a pointer. I remember this was common when converting char to unsigned char and various other sign changing casts in days of yore.
char
unsigned char