У меня нет опыта работы на С++, и я исхожу из фона Java. В последнее время меня спросили в интервью, почему Java не допускает множественного наследования, и ответ был довольно прост. Тем не менее, мне все еще интересно, как С++ имеет дело с этим, поскольку он позволяет наследовать более чем один класс.
В частности, скажем, что существует класс под названием MechanicalEngineer
, а другой - ElectricalEngineer
. Оба имеют метод под названием buildRobot()
.
Что произойдет, если мы создадим третий класс RoboticsEngineer
, который будет удаляться из обоих и не переопределяет этот метод, и вы просто вызываете:
(some instance of RoboticsEngineer).buildRobot()
Будет ли выбрано исключение, или будет использоваться метод из одного из суперклассов? Если да, то каким образом компилятор знает, какой класс использовать?