error C2259: 'Mammal' : cannot instantiate abstract class (
невозможно создать экземпляр
абстрактного класса)
Однако вы можете создавать экземпляры производных от класса Mammal, пока
классы-потомки будут иметь осуществлённые виртуальные функции-члены.
Множественное наследование Не всё множественное так хорошо, как это звучит. Множественное наследование –
это когда производный класс наследуется более чем от одного базового класса.
Обычно, это работает без помех, если множественные базовые классы от которых
мы наследуем, не имеют совершенно ничего общего друг с другом.
Например, у нас может быть класс Window, который наследуется от базовых
классов SoundManager и GraphicManager. Если SoundManager предоставляет
функцию-член playSound(), a GraphicManager предоставляет функцию-член
drawSprite(), тогда класс Window будет в состоянии использовать эти
дополнительные характеристики без проблем.
Game Window наследуемое от Sound Man и Graphic Man, означает, что Game Window будет иметь обе установленные характеристики Тем не менее, множественное наследование может иметь негативные
последствия. Скажем, мы хотим создать класс Мул, который происходит от классов
Ослица и Конь. Классы Ослица и Конь в свою очередь наследуются от класса
Млекопитающее. У нас мгновенно возникает вопрос! Если мы вызовем функцию
mule.talk() (мул.говорить()), а для мула мы не подменяли функцию talk(), то какая
функция-член должна быть запущена, от класса Ослица или от класса Конь? Это не
ясно.