Одиночное наследование легко реализовать. Например, в C наследование можно моделировать следующим образом:
struct Base { int a; }
struct Descendant { Base parent; int b; }
Но с множественным наследованием компилятор должен расположить несколько родителей внутри вновь созданного класса. Как это делается?
Проблема, которую я вижу, возникает в том случае, если родители должны быть организованы в AB или BA или, возможно, даже по-другому? И затем, если я сделаю бросок:
SecondBase * base = (SecondBase *) &object_with_base1_and_base2_parents;
Компилятор должен учитывать, следует ли изменять исходный указатель или нет. Подобные сложные вещи необходимы для виртуальных машин.