Up until now I always thought that you can identify an object by it's address in memory. This doesn't hold for upcasted pointers to different base classes when using multiple inheritance. These pointers can have different addresses than the address of the derived object and seeing how MI works, I can understand why this is.
But now I've read that you can get differing addresses even in a single inhertance chain. So if you do:
Derived* dp = new Derived;
Base* bp = derived;
you have no guarantee that these pointers hold the same address, even when it's not MI. Is that correct?