Я изучаю свою лекцию по C++, и профессор показывает слайд с этим примером кода. Он говорит, что, поскольку b1 является первым родителем (так что я думаю, что он реализован первым?), он имеет тот же адрес памяти, что и дочерний класс (Mi). Тогда я все еще не понимаю, почему b2 не равно &mi, хотя вы указали это таким образом в Base1* b1 = &mi.
Я думал, что в памяти это выглядит так (см. рисунок), но я думаю, глядя на тот факт, что b2 == &mi ложно, это неверно. Как изменить изображение, чтобы оно правильно отображало структуру памяти?
Mi mi; //MI inherits both from Base1 and Base2
Base1* b1 = &mi; // Upcast
Base2* b2 = &mi; // Upcast
//Suppose b1 is first parent
//now we test:
b1 == &mi; //true
b2 == &mi; //false